diff --git a/wally-pipelined/regression/sim-wally-rv64icfd b/wally-pipelined/regression/sim-wally-rv64icfd new file mode 100755 index 000000000..8d5f7378f --- /dev/null +++ b/wally-pipelined/regression/sim-wally-rv64icfd @@ -0,0 +1 @@ +vsim -do wally-pipelined-rv64icfd.do diff --git a/wally-pipelined/regression/wally-pipelined-rv64icfd.do b/wally-pipelined/regression/wally-pipelined-rv64icfd.do new file mode 100644 index 000000000..9d8ff5c67 --- /dev/null +++ b/wally-pipelined/regression/wally-pipelined-rv64icfd.do @@ -0,0 +1,50 @@ +# wally-pipelined.do +# +# Modification by Oklahoma State University & Harvey Mudd College +# Use with Testbench +# James Stine, 2008; David Harris 2021 +# Go Cowboys!!!!!! +# +# Takes 1:10 to run RV64IC tests using gui + +# Use this wally-pipelined.do file to run this example. +# Either bring up ModelSim and type the following at the "ModelSim>" prompt: +# do wally-pipelined.do +# or, to run from a shell, type the following at the shell prompt: +# vsim -do wally-pipelined.do -c +# (omit the "-c" to see the GUI while running from the shell) + +onbreak {resume} + +# create library +if [file exists work] { + vdel -all +} +vlib work + +# compile source files +# suppress spurious warnngs about +# "Extra checking for conflicts with always_comb done at vopt time" +# because vsim will run vopt + +# default to config/rv64ic, but allow this to be overridden at the command line. For example: +# do wally-pipelined.do ../config/rv32ic +switch $argc { + 0 {vlog +incdir+../config/rv64icfd +incdir+../config/shared ../testbench/testbench-imperas.sv ../src/*/*.sv -suppress 2583} + 1 {vlog +incdir+$1 +incdir+../config/shared ../testbench/testbench-imperas.sv ../testbench/function_radix.sv ../src/*/*.sv -suppress 2583} +} +# start and run simulation +# remove +acc flag for faster sim during regressions if there is no need to access internal signals +vopt +acc work.testbench -o workopt +vsim workopt + +view wave +-- display input and output signals as hexidecimal values +do ./wave-dos/default-waves.do + +-- Run the Simulation +#run 5000 +run -all +#quit +noview ../testbench/testbench-imperas.sv +view wave diff --git a/wally-pipelined/src/fpu/FMA/fma1.sv b/wally-pipelined/src/fpu/FMA/fma1.sv index 63fa5e0b0..39bc34f89 100644 --- a/wally-pipelined/src/fpu/FMA/fma1.sv +++ b/wally-pipelined/src/fpu/FMA/fma1.sv @@ -1,103 +1,137 @@ - //////////////////////////////////////////////////////////////////////////////// -// Block Name: fmac.v -// Author: David Harris -// Date: 11/2/1995 -// -// Block Description: -// This is the top level block of a floating-point multiply/accumulate -// unit(FMAC). It instantiates the following sub-blocks: -// -// array Booth encoding, partial product generation, product summation -// expgen Exponent summation, compare, and adjust -// align Alignment shifter -// add Carry-save adder for accumulate, carry propagate adder -// lza Leading zero anticipator to control normalization shifter -// normalize Normalization shifter -// round Rounding of result -// exception Handles exceptional cases -// bypass Handles bypass of result to ReadData1E or ReadData3E inputs -// sign One bit sign handling block -// special Catch special cases (inputs = 0 / infinity / etc.) -// -// The FMAC computes FmaResultM=ReadData1E*ReadData2E+ReadData3E, rounded with the mode specified by -// RN, RZ, RM, or RP. The result is optionally bypassed back to -// the ReadData1E or ReadData3E inputs for use on the next cycle. In addition, four signals -// are produced: trap, overflow, underflow, and inexact. Trap indicates -// an infinity, NaN, or denormalized number to be handled in software; -// the other three signals are IEEE flags. -// -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -module fma1(ReadData1E, ReadData2E, ReadData3E, FrmE, - rE, sE, tE, bsE, killprodE, sumshiftE, sumshiftzeroE, aligncntE, aeE - , xzeroE, yzeroE, zzeroE, xnanE,ynanE, znanE, xdenormE, ydenormE, zdenormE, - xinfE, yinfE, zinfE, nanE, prodinfE); -///////////////////////////////////////////////////////////////////////////// +module fma1( - input logic [63:0] ReadData1E; // input 1 - input logic [63:0] ReadData2E; // input 2 - input logic [63:0] ReadData3E; // input 3 - input logic [2:0] FrmE; // Rounding mode - output logic [12:0] aligncntE; // status flags - output logic [105:0] rE; // one result of partial product sum - output logic [105:0] sE; // other result of partial products - output logic [163:0] tE; // output logic of alignment shifter - output logic [12:0] aeE; // multiplier expoent - output logic bsE; // sticky bit of addend - output logic killprodE; // ReadData3E >> product - output logic xzeroE; - output logic yzeroE; - output logic zzeroE; - output logic xdenormE; - output logic ydenormE; - output logic zdenormE; - output logic xinfE; - output logic yinfE; - output logic zinfE; - output logic xnanE; - output logic ynanE; - output logic znanE; - output logic nanE; - output logic prodinfE; - output logic [8:0] sumshiftE; - output logic sumshiftzeroE; + input logic [63:0] ReadData1E, + input logic [63:0] ReadData2E, + input logic [63:0] ReadData3E, + output logic [105:0] ProdManE, + output logic [161:0] AlignedAddendE, + output logic [12:0] ProdExpE, + output logic AddendStickyE, + output logic KillProdE, + output logic XZeroE, YZeroE, ZZeroE, + output logic XInfE, YInfE, ZInfE, + output logic XNaNE, YNaNE, ZNaNE); -// Internal nodes - -// output logic [12:0] aligncntE; // shift count for alignment + logic [51:0] XMan,YMan,ZMan; + logic [10:0] XExp,YExp,ZExp; + logic XSgn,YSgn,ZSgn; + logic [12:0] AlignCnt; + logic [211:0] Shift; + logic XDenormE, YDenormE, ZDenormE; - logic prodof; // ReadData1E*ReadData2E out of range + // split inputs into the sign bit, mantissa, and exponent for readability + assign XSgn = ReadData1E[63]; + assign YSgn = ReadData2E[63]; + assign ZSgn = ReadData3E[63]; + + assign XExp = ReadData1E[62:52]; + assign YExp = ReadData2E[62:52]; + assign ZExp = ReadData3E[62:52]; + + assign XMan = ReadData1E[51:0]; + assign YMan = ReadData2E[51:0]; + assign ZMan = ReadData3E[51:0]; + + + + // determine if an input is a special value + assign XNaNE = &ReadData1E[62:52] && |ReadData1E[51:0]; + assign YNaNE = &ReadData2E[62:52] && |ReadData2E[51:0]; + assign ZNaNE = &ReadData3E[62:52] && |ReadData3E[51:0]; + + assign XDenormE = ~(|ReadData1E[62:52]) && |ReadData1E[51:0]; + assign YDenormE = ~(|ReadData2E[62:52]) && |ReadData2E[51:0]; + assign ZDenormE = ~(|ReadData3E[62:52]) && |ReadData3E[51:0]; + + assign XInfE = &ReadData1E[62:52] && ~(|ReadData1E[51:0]); + assign YInfE = &ReadData2E[62:52] && ~(|ReadData2E[51:0]); + assign ZInfE = &ReadData3E[62:52] && ~(|ReadData3E[51:0]); + + assign XZeroE = ~(|ReadData1E[62:0]); + assign YZeroE = ~(|ReadData2E[62:0]); + assign ZZeroE = ~(|ReadData3E[62:0]); + // Calculate the product's exponent + // - When multipliying two fp numbers, add the exponents + // - Subtract 3ff to remove one of the biases (XExp + YExp has two biases, one from each exponent) + // - Denormal numbers have an an exponent value of 1, however they are + // represented with an exponent of 0. add one if there is a denormal number + assign ProdExpE = (XZeroE|YZeroE) ? 13'b0 : + {2'b0, XExp} + {2'b0, YExp} - 13'h3ff + XDenormE + YDenormE; + + // Calculate the product's mantissa + // - Add the assumed one. If the number is denormalized or zero, it does not have an assumed one. + assign ProdManE = {53'b0,~(XDenormE|XZeroE),XMan} * {53'b0,~(YDenormE|YZeroE),YMan}; + // determine the shift count for alignment + // - negitive means Z is larger, so shift Z left + // - positive means the product is larger, so shift Z right + // - Denormal numbers have an an exponent value of 1, however they are + // represented with an exponent of 0. add one to the exponent if it is a denormal number + assign AlignCnt = ProdExpE - ZExp - ZDenormE; + + // Alignment shifter + + // Defualt Addition without shifting + // | 55'b0 | 106'b(product) | 2'b0 | + // |1'b0| addnend | + + // the 1'b0 before the added is because the product's mantissa has two bits before the decimal point (xx.xxxxxxxxxx...) + + always_comb + begin + + // Set default values + AddendStickyE = 0; + KillProdE = 0; + + // If the product is too small to effect the sum, kill the product + + // | 55'b0 | 106'b(product) | 2'b0 | + // | addnend | + if ($signed(AlignCnt) <= $signed(-56)) begin + KillProdE = 1; + AlignedAddendE = {55'b0, ~(ZZeroE|ZDenormE),ZMan,2'b0}; + AddendStickyE = ~(XZeroE|YZeroE); + + // If the Addend is shifted left (negitive AlignCnt) + + // | 55'b0 | 106'b(product) | 2'b0 | + // | addnend | + end else if($signed(AlignCnt) <= $signed(0)) begin + Shift = {55'b0, ~(ZZeroE|ZDenormE),ZMan, 104'b0} << -AlignCnt; + AlignedAddendE = Shift[211:50]; + AddendStickyE = |(Shift[49:0]); + + // If the Addend is shifted right (positive AlignCnt) + + // | 55'b0 | 106'b(product) | 2'b0 | + // | addnend | + end else if ($signed(AlignCnt)<=$signed(105)) begin + Shift = {55'b0, ~(ZZeroE|ZDenormE),ZMan, 104'b0} >> AlignCnt; + AlignedAddendE = Shift[211:50]; + AddendStickyE = |(Shift[49:0]); + + // If the addend is too small to effect the addition + // - The addend has to shift two past the end of the addend to be considered too small + // - The 2 extra bits are needed for rounding + + // | 55'b0 | 106'b(product) | 2'b0 | + // | addnend | + end else begin + AlignedAddendE = 162'b0; + AddendStickyE = ~ZZeroE; - - - -// Instantiate fraction datapath - - multiply multiply(.xman(ReadData1E[51:0]), .yman(ReadData2E[51:0]), .*); - align align(.zman(ReadData3E[51:0]),.*); - -// Instantiate exponent datapath - - expgen1 expgen1(.xexp(ReadData1E[62:52]),.yexp(ReadData2E[62:52]),.zexp(ReadData3E[62:52]),.*); -// Instantiate special case detection across datapath & exponent path - - special special(.*); - - -// Instantiate control output logic - -flag1 flag1(.*); + end + end endmodule diff --git a/wally-pipelined/src/fpu/FMA/fma2.sv b/wally-pipelined/src/fpu/FMA/fma2.sv index 2ff976623..a965ace83 100644 --- a/wally-pipelined/src/fpu/FMA/fma2.sv +++ b/wally-pipelined/src/fpu/FMA/fma2.sv @@ -1,104 +1,107 @@ - //////////////////////////////////////////////////////////////////////////////// -// Block Name: fmac.v -// Author: David Harris -// Date: 11/2/1995 -// -// Block Description: -// This is the top level block of a floating-point multiply/accumulate -// unit(FMAC). It instantiates the following sub-blocks: -// -// array Booth encoding, partial product generation, product summation -// expgen Mxponent summation, compare, and adjust -// align Alignment shifter -// add Carry-save adder for accumulate, carry propagate adder -// lza Leading zero anticipator to control normalization shifter -// normalize Normalization shifter -// round Rounding of result -// exception Handles exceptional cases -// bypass Handles bypass of result to ReadData1M or ReadData3M input logics -// sign One bit sign handling block -// special Catch special cases (input logics = 0 / infinity / etc.) -// -// The FMAC computes FmaResultM=ReadData1M*ReadData2M+ReadData3M, rounded with the mode specified by -// RN, RZ, RM, or RP. The result is optionally bypassed back to -// the ReadData1M or ReadData3M input logics for use on the next cycle. In addition, four signals -// are produced: trap, overflow, underflow, and inexact. Trap indicates -// an infinity, NaN, or denormalized number to be handled in software; -// the other three signals are IMMM flags. -// -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -module fma2(ReadData1M, ReadData2M, ReadData3M, FrmM, - FmaResultM, FmaFlagsM, aligncntM, rM, sM, - tM, normcntM, aeM, bsM,killprodM, - xzeroM, yzeroM,zzeroM,xdenormM,ydenormM, - zdenormM,xinfM,yinfM,zinfM,xnanM,ynanM,znanM, - nanM,sumshiftM,sumshiftzeroM,prodinfM - -); -///////////////////////////////////////////////////////////////////////////// +module fma2( - input logic [63:0] ReadData1M; // input logic 1 - input logic [63:0] ReadData2M; // input logic 2 - input logic [63:0] ReadData3M; // input logic 3 - input logic [2:0] FrmM; // Rounding mode - input logic [12:0] aligncntM; // status flags - input logic [105:0] rM; // one result of partial product sum - input logic [105:0] sM; // other result of partial products - input logic [163:0] tM; // output of alignment shifter - input logic [8:0] normcntM; // shift count for normalizer - input logic [12:0] aeM; // multiplier expoent - input logic bsM; // sticky bit of addend - input logic killprodM; // ReadData3M >> product - input logic prodinfM; - input logic xzeroM; - input logic yzeroM; - input logic zzeroM; - input logic xdenormM; - input logic ydenormM; - input logic zdenormM; - input logic xinfM; - input logic yinfM; - input logic zinfM; - input logic xnanM; - input logic ynanM; - input logic znanM; - input logic nanM; - input logic [8:0] sumshiftM; - input logic sumshiftzeroM; - - - output logic [63:0] FmaResultM; // output FmaResultM=ReadData1M*ReadData2M+ReadData3M - output logic [4:0] FmaFlagsM; // status flags + input logic [63:0] ReadData1M, + input logic [63:0] ReadData2M, + input logic [63:0] ReadData3M, + input logic [2:0] FrmM, + input logic [105:0] ProdManM, + input logic [161:0] AlignedAddendM, + input logic [12:0] ProdExpM, + input logic AddendStickyM, + input logic KillProdM, + input logic [3:0] FOpCtrlM, + input logic XZeroM, YZeroM, ZZeroM, + input logic XInfM, YInfM, ZInfM, + input logic XNaNM, YNaNM, ZNaNM, + output logic [63:0] FmaResultM, + output logic [4:0] FmaFlagsM); -// Internal nodes - logic [163:0] sum; // output of carry prop adder - logic [53:0] v; // normalized sum, R, S bits -// logic [12:0] aligncnt; // shift count for alignment - logic [8:0] normcnt; // shift count for normalizer - logic negsum; // negate sum - logic invz; // invert addend - logic selsum1; // select +1 mode of sum - logic negsum0; // sum +0 < 0 - logic negsum1; // sum +1 < 0 - logic sumzero; // sum = 0 - logic infinity; // generate infinity on overflow - logic sumof; // result out of range - logic zexpsel; - logic denorm0; - logic resultdenorm; - logic inf; - logic specialsel; - logic expplus1; - logic sumuf; - logic psign; - logic sticky; - logic [12:0] de0; - logic isAdd; - assign isAdd = 1; + logic [51:0] XMan, YMan, ZMan, WMan; + logic [10:0] XExp, YExp, ZExp, WExp; + logic XSgn, YSgn, ZSgn, WSgn, PSgn; + logic IsSub; + logic [105:0] ProdMan2; + logic [162:0] AlignedAddend2; + logic [161:0] Sum; + logic [162:0] SumTmp; + logic [12:0] SumExp; + logic [12:0] SumExpMinus1; + logic [12:0] SumExpTmp, WExpTmp; + logic [53:0] NormSum; + logic [161:0] NormSumTmp; + logic [8:0] NormCnt; + logic NormSumSticky; + logic SumZero; + logic NegSum; + logic InvZ; + logic ResultDenorm; + logic Sticky; + logic Plus1, Minus1, Plus1Tmp, Minus1Tmp; + logic Invalid,Underflow,Overflow,Inexact; + logic [8:0] DenormShift; + logic ProdInf, ProdOf, ProdUf; + logic [63:0] FmaResultTmp; + logic SubBySmallNum; + + + // split inputs into the sign bit, mantissa, and exponent for readability + assign XSgn = ReadData1M[63]; + assign YSgn = ReadData2M[63]; + assign ZSgn = ReadData3M[63]; + + assign XExp = ReadData1M[62:52]; + assign YExp = ReadData2M[62:52]; + assign ZExp = ReadData3M[62:52]; + + assign XMan = ReadData1M[51:0]; + assign YMan = ReadData2M[51:0]; + assign ZMan = ReadData3M[51:0]; + + + + // is it an FMSUB or FNMSUB instruction + assign IsSub = FOpCtrlM[0]; + + + + + + // Addition + + // Negate Z when doing one of the following opperations: + // -prod + Z + // prod - Z + assign InvZ = IsSub ? ~(ZSgn ^ PSgn) : (ZSgn ^ PSgn); + + // Choose an inverted or non-inverted addend - the one is added later + assign AlignedAddend2 = InvZ ? ~{2'b0,AlignedAddendM} : {2'b0,AlignedAddendM}; + // Kill the product if the product is too small to effect the addition (determined in fma1.sv) + assign ProdMan2 = KillProdM ? 106'b0 : ProdManM; + + // Do the addition + // - add one to negate if the added was inverted + // - the 2 extra bits at the begining and end are needed for rounding + assign SumTmp = AlignedAddend2 + {55'b0, ProdMan2,2'b0} + InvZ; + + // Is the sum negitive + assign NegSum = SumTmp[162]; + // If the sum is negitive, negate the sum. + assign Sum = NegSum ? -SumTmp[161:0] : SumTmp[161:0]; + + + + + + + // Leading one detector + logic [8:0] i; + always_comb begin + i = 0; + while (~Sum[161-i] && $unsigned(i) <= $unsigned(9'd161)) i = i+1; // search for leading one + NormCnt = i+1; // compute shift count + end @@ -110,25 +113,163 @@ module fma2(ReadData1M, ReadData2M, ReadData3M, FrmM, + // Normalization + + + // Determine if the sum is zero + assign SumZero = ~(|Sum); + + // Determine if the result is denormal + assign ResultDenorm = $signed(SumExpTmp)<=0 & ($signed(SumExpTmp+13'd52)>=0); + + // Determine the shift needed for denormal results + assign DenormShift = ResultDenorm ? SumExpTmp-1 : 6'b0; + + // Normalize the sum + assign NormSumTmp = SumZero ? 162'b0 : Sum << NormCnt+DenormShift; + assign NormSum = NormSumTmp[161:108]; + // Calculate the sticky bit + assign NormSumSticky = (|NormSumTmp[107:0]); + assign Sticky = AddendStickyM | NormSumSticky; + + // Determine sum's exponent + assign SumExpTmp = KillProdM ? ZExp : ProdExpM + -({5'b0, NormCnt} - 13'd56); + assign SumExp = SumZero ? 12'b0 : + ResultDenorm ? 12'b0 : + SumExpTmp; -// Instantiate fraction datapath - - add add(.*); - lza lza(.*); - normalize normalize(.zexp(ReadData3M[62:52]),.*); - round round(.xman(ReadData1M[51:0]), .yman(ReadData2M[51:0]),.zman(ReadData3M[51:0]), .wman(FmaResultM[51:0]),.wsign(FmaResultM[63]),.*); - -// Instantiate exponent datapath - - expgen2 expgen2(.xexp(ReadData1M[62:52]),.yexp(ReadData2M[62:52]),.zexp(ReadData3M[62:52]),.wexp(FmaResultM[62:52]),.*); -// Instantiate control logic + + + + + // Rounding + + // round to nearest even + // {NormSum[1], NormSum[0], Sticky} + // 0xx - do nothing + // 100 - tie - Plus1 if NormSum[2] = 1 + // - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen + // 101/110/111 - Plus1 + + // round to zero - do nothing + // - subtract 1 if a small number was supposed to be subtracted from the positive result + + // round to -infinity - Plus1 if negitive + // - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen + // - subtract 1 if a small number was supposed to be subtracted from the positive result + + // round to infinity - Plus1 if positive + + // - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen + // - subtract 1 if a small number was supposed to be subtracted from the negitive result + + // round to nearest max magnitude + // {NormSum[1], NormSum[0], Sticky} + // 0xx - do nothing + // 100 - tie - Plus1 + // - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen + // 101/110/111 - Plus1 + + // Deterimine if the result was supposed to be subtrated by a small number + assign SubBySmallNum = AddendStickyM&InvZ&~NormSumSticky; + + always_comb begin + // Determine if you add 1 + case (FrmM) + 3'b000: Plus1Tmp = NormSum[1] & (NormSum[0] | (Sticky&~(~NormSum[0]&SubBySmallNum)) | (~NormSum[0]&~Sticky&NormSum[2]));//round to nearest even + 3'b001: Plus1Tmp = 0;//round to zero + 3'b010: Plus1Tmp = WSgn & ~(SubBySmallNum);//round down + 3'b011: Plus1Tmp = ~WSgn & ~(SubBySmallNum);//round up + 3'b100: Plus1Tmp = (NormSum[1] & (NormSum[0] | (Sticky&~(~NormSum[0]&SubBySmallNum)) | (~NormSum[0]&~Sticky)));//round to nearest max magnitude + default: Plus1Tmp = 1'bx; + endcase + // Determine if you subtract 1 + case (FrmM) + 3'b000: Minus1Tmp = 0;//round to nearest even + 3'b001: Minus1Tmp = SubBySmallNum;//round to zero + 3'b010: Minus1Tmp = ~WSgn & SubBySmallNum;//round down + 3'b011: Minus1Tmp = WSgn & SubBySmallNum;//round up + 3'b100: Minus1Tmp = 0;//round to nearest max magnitude + default: Minus1Tmp = 1'bx; + endcase + + end + + // If an answer is exact don't round + assign Plus1 = Sticky | (|NormSum[1:0]) ? Plus1Tmp : 0; + assign Minus1 = Sticky | (|NormSum[1:0]) ? Minus1Tmp : 0; + // Compute rounded result + assign {WExpTmp, WMan} = {SumExp, NormSum[53:2]} + Plus1 - Minus1; + assign WExp = WExpTmp[10:0]; + + + + + + + + // Sign calculation + + // Calculate the product's sign + assign PSgn = XSgn ^ YSgn; + + // Determine the sign if the sum is zero + // if product underflows then use psign + // otherwise + // if cancelation then 0 unless round to -inf + // otherwise psign + assign zerosign = Underflow ? PSgn : + (IsSub ? (PSgn^ZSgn ? PSgn : FrmM == 3'b010) : + (PSgn^ZSgn ? FrmM == 3'b010 : PSgn)); + + // is the result negitive + // if p - z is the Sum negitive + // if -p + z is the Sum positive + // if -p - z then the Sum is negitive + assign resultsgn = InvZ&ZSgn&NegSum | InvZ&PSgn&~NegSum | (ZSgn&PSgn); + assign WSgn = SumZero ? zerosign : resultsgn; -sign sign(.xsign(ReadData1M[63]),.ysign(ReadData2M[63]),.zsign(ReadData3M[63]),.wsign(FmaResultM[63]),.*); -flag2 flag2(.xsign(ReadData1M[63]),.ysign(ReadData2M[63]),.zsign(ReadData3M[63]),.vbits(v[1:0]),.*); + // Select the result + assign FmaResultTmp = XNaNM ? {XSgn, XExp, 1'b1,XMan[50:0]} : + YNaNM ? {YSgn, YExp, 1'b1,YMan[50:0]} : + ZNaNM ? {ZSgn, ZExp, 1'b1,ZMan[50:0]} : + Invalid ? {WSgn, 11'h7ff, 1'b1, 51'b0} : // has to be before inf + XInfM ? {PSgn, XExp, XMan} : + YInfM ? {PSgn, YExp, YMan} : + ZInfM ? {ZSgn^IsSub, ZExp, ZMan} : + Overflow ? {WSgn, 11'h7ff, 52'b0} : + Underflow ? {WSgn, 63'b0} : + KillProdM ? ReadData3M - (Minus1&AddendStickyM) + (Plus1&AddendStickyM): // has to be after Underflow + {WSgn,WExp,WMan}; + + // Negate the result if FNMADD or FNSUB instruction + assign FmaResultM[63] = FOpCtrlM[1] ? ~FmaResultTmp[63] : FmaResultTmp[63]; + assign FmaResultM[62:0] = FmaResultTmp[62:0]; + + // Set Invalid flag for following cases: + // 1) Inf - Inf + // 2) 0 * Inf + // 3) any input is a signaling NaN + assign ProdOf = (ProdExpM >= 2047 && ~ProdExpM[12]); + assign ProdInf = ProdOf && ~XNaNM && ~YNaNM; + assign Invalid = (XNaNM&~XMan[51]) | (YNaNM&~YMan[51]) | (ZNaNM&~ZMan[51]) | ((XInfM || YInfM || ProdInf) & ZInfM & (XSgn ^ YSgn ^ ZSgn)) | (XZeroM & YInfM) | (YZeroM & XInfM); + + // Set Overflow flag if the number is too big to be represented + assign Overflow = WExpTmp >= 2047 & ~WExpTmp[12]; + + // Set Underflow flag if the number is too small to be represented and isn't denormalized + assign ProdUf = KillProdM & ZZeroM; + assign Underflow = (WExpTmp[12] & ~ResultDenorm) | ProdUf; + + // Set Inexact flag if the result is diffrent from what would be outputed given infinite precision + assign Inexact = Sticky|Overflow|Underflow | (|NormSum[1:0]); + + // Combine flags - FMA can't set the Divide by zero flag + assign FmaFlagsM = {Invalid, 1'b0, Overflow, Underflow, Inexact}; endmodule diff --git a/wally-pipelined/src/fpu/FMA/tbgen/results.dat b/wally-pipelined/src/fpu/FMA/tbgen/results.dat index b1158ef9b..f8fb480ea 100644 --- a/wally-pipelined/src/fpu/FMA/tbgen/results.dat +++ b/wally-pipelined/src/fpu/FMA/tbgen/results.dat @@ -1 +1,170 @@ -c3f000200003fffe 0000000000000001 001ffffffffffffe 80cffc400007fffd 80cffc400007fffc Wrong FmaResultM= -64 ydenorm 1119653 +cce008007fffffff 7fe6e0fac3dc6e26 401ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 28027 +c03fffffffffc800 7fdfffffffffe000 37f07ffffffffffc fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 44043 +c7f000ffffffffef 7fefffffffffde00 4e1ffffffffffe7f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 107106 +c7f00000dffffffe 7fe0000000000000 8000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 238237 +ffdf0000001fffff 7feffffffffffffe 7fe0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 310309 +c79ff80003fffffe 7feffc0000003ffe 2bd0020000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 426425 +ffeffffeffc00000 3fffffffffffffff 8000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 436435 +d16ff800007fffff 7fe0000000000000 c000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 517516 +d10ffffffff3fffe 7feffffffffffffe b9d07f0000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 519518 +442ff9fffffffffe ffefffffffffffff 3ff0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 553552 +c34f24b48d2af3e7 7fef7fe000000000 800ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 577576 +7fdfffffff8000ff c3f0100000000002 39300dfffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 593592 +ffe00007fffffdfe 4340000000000001 ffd34131592163f6 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 654653 +4b98eba3e512fb7b ffe84639040d967a 42c00000010001fe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 683682 +ffed83a6b2e656b1 7fe0000000000001 0010000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 796795 +7fd5220b51609cf6 c030000000001020 7fdfbfffffffffdf fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 903902 +c3d6eb6dede43198 7feffffffffffffe 3a6008000000000f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1078076 +c1f02000001fffff 7fe0000000000001 e8f000000040000f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1285283 +c1cdfffbffffffff 7fe0000000000001 bca0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1355353 +43447336acaf7bd8 ffeffffffffffffe 0010000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1391389 +4010000000fff7ff ffe0000000000000 7fdfffc000003ffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1528526 +ffe0000002000003 47fffc00000007ff 93b0040000002000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1597595 +4060000200000400 ffe0000000000000 7fe0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1598596 +fe7007fffdffffff 7fdffffffffff03e 001ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1631629 +4000000000000000 ffe0000000000001 3fdffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1738736 +4000000000000000 ffeffffffffffffe 4263dd4adb450db9 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1740738 +40200001ffc00000 ffe0000000000000 3fdfcfffffffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1807805 +400ffffffffffffe ffd00013fffffffe 40200000100001ff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1941939 +400ffffffffffffe ffe0000000000001 c00fffe003ffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1947945 +7fe00000080000fe bfffffffffffffff 3fd002000000003f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2006003 +4010000000000000 ffe0000000000001 7feffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2018015 +4010000000000000 ffeffffffffffffe bf7ffffffff80001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2020017 +43ffffd000000000 ffe0000000000000 613ffffffffffe1e fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2087084 +c1fb6efe117a3ae3 7fefffffffffffff 43c0000001effffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2123120 +ffdfffffc0000000 7fe0000002002000 3fffffffffbfff80 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2147144 +401ffffffffffffe ffe0000000000001 7c300040000000ff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2227224 +4340000000000000 ffe0000000000001 bfeffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2297294 +c0f0000000203fff 7fefffffffffffff c921fffffffffefe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2402399 +7fedffffffdfffff c7f0400000000008 401ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2406403 +434fffffffffffff ffd0000008fffffe c03fffffffffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2419416 +41dfffffffe00003 ffe0000000000001 3ff0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2436433 +c1f0000000037fff 7fdffffffff7ffc0 3fdffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2451448 +ffebfffffffffbff 4010000000000001 bf20001fffffffe0 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2465462 +ffe000020001ffff 7fdfdffff7ffffff 41d000083fffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2471468 +434ffffffffffffe ffe0000000000001 bf1fffffc00003ff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2506503 +7fe0000000000000 c1c0000001ffffbf 0000000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 2538535 +7fe0000000000000 c1d264933e9e988c 3ca0000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2565562 +7fe0000000000000 c00fffffffffffff bcaffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2567564 +7fe0000000000000 c010000000000001 403400003fffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2569566 +7fe0000000000001 c3d0bfffffffffff a9817e19c25e6ffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2590587 +7fe0000000000001 c1c01feffffffffe 3fe0000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2592589 +7fe0000000000001 f860000ffbfffffe 4000000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2619616 +7fe0000000000001 c1e29f751d0db106 41dff88000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2626623 +7fe0000000000001 c010000000000001 800ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 2639636 +7fe0000000000001 c340000000000000 41e9bfbd1705ab74 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2641638 +7fe0000000000001 c1ffffc0007fffff c0e00000003f8000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2644641 +7fefffffffffffff c3cfff000003ffff c01fffffefbfffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2653650 +c00000ffc0000000 7fefffffffff81ff 00199d0888644678 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2660657 +7fefffffffffffff c01fffe00000003e 3cdedfffffffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2671668 +7fefffffffffffff c7e00800ffffffff c010000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2682679 +7fefffffffffffff c3f50270323fdbca 3fe0000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2691688 +7fefffffffffffff c06f000000000006 8010000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2700697 +7fefffffffffffff bff0000000000001 001ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2702699 +7fefffffffffffff bffffffffffffffe 47edd848c981ea6a fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2704701 +7fefffffffffffff d6f0007fbfffffff 380ff8000000001f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2707704 +7fefffffffffffff c167c6ca402625fe ffe0000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2709706 +7fefffffffffffff c340000000000000 7feffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2711708 +7fefffffffffffff c34fffffffffffff c1a3cdb48240da83 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2713710 +7feffffffffffffe c01580f1a3e9c31d 3d258f8ba280bed4 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2725722 +7feffffffffffffe ffd800001fffffff bfd0000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2727724 +7feffffffffffffe c27a98a4d75fad64 0000000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 2736733 +c01ffffffe03ffff 7fd00000000c0000 c00ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2739736 +7feffffffffffffe c3f01ffffff00000 4340000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2745742 +7feffffffffffffe c0550d69ccececd4 403ffffff83fffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2761758 +7feffffffffffffe c00fffffffffffff b81080ffffffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2776773 +7feffffffffffffe c0020ec4bd7f8123 403894684b0415af fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2779776 +7feffffffffffffe c34ffffffffffffe 401ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2783780 +7feffffffffffffe ffe0000000000001 43c0000000000bfe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2785782 +7feffffffffffffe c1f000000003ff7f 40017ffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2788785 +bf9ffffffd800000 7fefffffffffffff ffefffffffbfffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2960957 +e8d01e2c59865900 7fe05fffffffffff c34ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2964961 +ffd917679344f70e 401fffffffffffff c000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3094090 +4470000023ffffff ffe0000000000001 b802000001ffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3204200 +43627f4abb7a5c8e ffefffffffffffff 0010000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3274270 +c1c0000820000000 7feffffffff8001f 402000100000007f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3332328 +c1cd41643238b450 7feffffffffffffe 3f4012189596a55a fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3519515 +c80ea7921c438451 7fe008000000007e 424153696dc450d3 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3552548 +4f000fffffffffff ffefffffffffffff 4010000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3553549 +7fe1868cfb076bc1 c34000000000037f b7effffc003ffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3719715 +c3fff9fffffffffe 7fe0000000000000 3d6000008000000e fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3726722 +43f007ffbfffffff ffefffffffffffff 43dffffeffffffbf fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3762758 +7fdfffdfffffffbe c01fffffffffffff 3fd0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3895891 +ffeefffffffffff7 43e0003ffffeffff b7f000001fdfffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4125120 +4800002000000007 ffe0000000000000 3ff0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4319314 +43f856a5096bfc0d ffeffffffffffffe 3fd0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4391386 +c009c2b9147e606c 7fe0000002007fff bfa004001ffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4440435 +4030008000003fff ffe0000000000000 b810eaddea941d3f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4528523 +67affffff8000006 f3016e70e2a6bd2f c1edddf29e459b21 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4548543 +ffe07ffbffffffff 5026589203bb88d1 401ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4586581 +43dffffc00000003 ffe0000000000000 8000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4598593 +ffdfffffff800003 4010000000000001 c290000080000002 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4627622 +ffd001fffffffbff 4010000000000001 8000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4697692 +bffffffffffffffe 7fefffffffffffff 3d30040000200000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4704699 +c000000000000000 7fefffffffffffff bfeffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4774769 +c000000000000000 7fe9d625d7f2ee96 380ffeffffffc000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4797792 +41efffffbfffdfff ffe0000000000000 bbf0000003f80000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4807802 +fcf00000000003e0 7fdfffffffc02000 bfeffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4892887 +c00ffffffffffffe 7fe0000000000000 001ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4981976 +c00ffffffffffffe 7fefffffffffffff 4020e8f734a930e7 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4983978 +ffeffffc01fffffe 43d0000000000000 3806864c983757ae fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5030024 +41b0000000010007 ffe0000000000001 0010000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5157151 +c3e413dc0ee29162 7fefffffffffffff 8000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5193187 +c01ffffffffffffe 7fe0000000000000 401ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5261255 +c01ffffffffffffe 7fefffffffffffff c1c177d35a8a07ad fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5263257 +c340000000000000 7feffffffffffffe 3ffffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5333327 +c34ff0000003fffe 7fefffffffffffff c0101442690e84e3 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5402396 +c340000000000001 7fe41774eee28bfa 37efffff000000ff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5437431 +c34fffffffffffff 7fe0000000000000 4010008001fffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5470464 +c34ffffffffffffe 7fe0000000000000 bcaffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5540534 +c34ffffffffffffe 7feffffffffffffe c7e6b68e99fe64db fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5542536 +ffe0000000000000 41effffff7fffffe 2a7000207fffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5590584 +ffe0000000000000 40b00000000008ff 4013ac1788ee2681 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5599593 +ffe0000000000000 4010000000000000 3fdffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5603597 +ffe0000000000000 401fffffffffffff 0012000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5605599 +ffe0000000000000 45e00007fff7ffff 9c80852a49e348a6 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5608602 +ffe0000000000000 41e6d2bd893fa49f 0000000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 5610604 +ffe0000000000000 7feffffffffffffe 800ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 5612606 +ffe0000000000000 4804ecddd4dee74f 9700000101fffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5617611 +ffe0000000000000 47e0400000000100 4340000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5619613 +ffe0000000000000 41d0000000001fff 800007ffffffdfff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 5626620 +ffe0000000000001 4c7ffffffff87fff 3fbfdffffffffff7 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5662656 +ffe0000000000001 401ffffffffffffe 001ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5675669 +ffe0000000000001 4340000000000001 48700003fffefffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5677671 +ffe0000000000001 4000f2f5230ef1a6 382efffffeffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5689683 +ffe0000000000001 407b2a20706ca02f bcc8eea3de85c218 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5707701 +41efdffffffbfffe ffe0000000000001 bca0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5715709 +ffe0000000000001 43e000000000ffff 4340000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5718712 +ffedffffffff7fff 7f500000001fffff 469cefa7e05db8e7 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5728722 +ffefffffffffffff 3fffffffffffffff bcaffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5738732 +ffefffffffffffff 4000000000000001 800ffffffdffe000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 5740734 +ffefffffffffffff 7fe0000000000000 3fdffffffffffe1f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5749743 +ffd44208deea7d5b 7fdffffcffffffff caf0000000007fff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5764758 +ffefffffffffffff 43cffff6ffffffff 47ffba85ed27c05e fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5779773 +ffeffffffffffffe 40b0000fffffffc0 bfd0000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5799793 +ffeffffffffffffe 43ea49f9e3cf97b4 0000000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 5808802 +ffeffffffffffffe 4000000000000001 800ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 5810804 +ffeffffffffffffe 4010000000000000 bc800001ffffffe0 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5812806 +ffeffffffffffffe 7fe0000000000000 c34ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5819813 +ffeffffffffffffe 7feffffffffffffe c1efff801fffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5821815 +ffdfffffc0007ffe 4340000000000001 8000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5886880 +c4a000001ffeffff 7fe0000000000000 b80fc03ffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5888882 +ffdfffff00000040 48f00001bfffffff c00ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5910904 +c37ffffffffffbf0 7fd1800000000000 bfa7e7cad560a3d0 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5912906 +c1700000000007f7 7feffffffffffffe 3f6ff7ffffffefff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6240233 +c3fffffffdfe0000 7fe0000000000000 c34fff6000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6447440 +400ffffdfffff7fe ffefffffffffffff 41de000000007ffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6483476 +4030000000004020 ffe88b9c477c3a97 ffe007ffff000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6575568 +7fe00807ffffffff c1e0000000007fe0 bfeffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6676669 +ffdfc00000000800 7fe0000000000000 bcffffffffffefef fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6726719 +7feffffeffffbfff c34ffffffffffffe c000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6760753 +42bff00000000010 ffefffffffffffff c3003a94038a1ec3 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6762755 +c3c00ffffffffeff 7feddda224891f86 43d0aa9335103e61 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6782775 +c08ff80000000400 7fe0000000000001 3ff0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6796789 +c07fffdfffffffbe 7feffffffffffffe 474ffffffdffff80 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6798791 +c01fffffeffff7ff 7fd0080080000000 bff26df7cf61cdd5 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6827820 +c7effff000000004 7fe0000008000fff 4770000007ffbfff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6863856 +7fe85e6f4033d7dd c000000000000000 bfe0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 7031023 +c1f732bc454b0563 7fe0000000000001 8000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 7076068 +ffe000000fffffbe 401ffffffffffffe b80d2116944eef72 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 7141133 +ffd0002000001fff 40e00003ffffefff c03fffffffe80000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 7242234 diff --git a/wally-pipelined/src/fpu/FMA/tbgen/tb b/wally-pipelined/src/fpu/FMA/tbgen/tb index 99b2247a8..5e2b37ce0 100755 Binary files a/wally-pipelined/src/fpu/FMA/tbgen/tb and b/wally-pipelined/src/fpu/FMA/tbgen/tb differ diff --git a/wally-pipelined/src/fpu/FMA/tbgen/tb.c b/wally-pipelined/src/fpu/FMA/tbgen/tb.c index 08124df85..37d43cb1c 100644 --- a/wally-pipelined/src/fpu/FMA/tbgen/tb.c +++ b/wally-pipelined/src/fpu/FMA/tbgen/tb.c @@ -26,13 +26,13 @@ void main() { char ans[81]; char flags[3]; int FrmE; - long stop = 1119653; - int debug = 1; + long stop = 5587581; + int debug = 0; //my_string = (char *) malloc (nbytes + 1); //bytes_read = getline (&my_string, &nbytes, stdin); - for(n=0; n < 305; n++) {//613 for 10000 + for(n=0; n < 1000; n++) {//613 for 10000 if(getline(&ln,&nbytes,fp) < 0 || feof(fp)) break; if(k == stop && debug == 1) break; k++; diff --git a/wally-pipelined/src/fpu/FMA/tbgen/tb.v b/wally-pipelined/src/fpu/FMA/tbgen/tb.v index 4b4ca93dd..dfb70b19b 100644 --- a/wally-pipelined/src/fpu/FMA/tbgen/tb.v +++ b/wally-pipelined/src/fpu/FMA/tbgen/tb.v @@ -11,26 +11,25 @@ module tb; wire [4:0] FmaFlagsM; wire [12:0] aligncntE; // status flags - wire [105:0] rE; // one result of partial product sum - wire [105:0] sE; // other result of partial products - wire [163:0] tE; // wire of alignment shifter + wire [105:0] ProdManE; // other result of partial products + wire [161:0] AlignedAddendE; // wire of alignment shifter wire [8:0] normcntE; // shift count for normalizer - wire [12:0] aeE; // multiplier expoent - wire bsE; // sticky bit of addend - wire killprodE; // ReadData3E >> product + wire [12:0] ProdExpE; // multiplier expoent + wire AddendStickyE; // sticky bit of addend + wire KillProdE; // ReadData3E >> product wire prodofE; // ReadData1E*ReadData2E out of range - wire xzeroE; + wire XZeroE; wire yzeroE; wire zzeroE; - wire xdenormE; - wire ydenormE; - wire zdenormE; - wire xinfE; - wire yinfE; - wire zinfE; - wire xnanE; - wire ynanE; - wire znanE; + wire XDenormE; + wire YDenormE; + wire ZDenormE; + wire XInfE; + wire YInfE; + wire ZInfE; + wire XNaNE; + wire YNaNE; + wire ZNaNE; wire nanE; wire [8:0] sumshiftE; wire sumshiftzeroE; @@ -45,25 +44,25 @@ reg ansnan; reg [105:0] s; // partial product 2 reg [51:0] xnorm; reg [51:0] ynorm; +wire [3:0] FOpCtrlM; + +assign FOpCtrlM = 4'b0; localparam period = 20; fma1 UUT1(.*); -fma2 UUT2(.ReadData1M(ReadData1E), .ReadData2M(ReadData2E), .ReadData3M(ReadData3E), .FrmM(FrmE), - .aligncntM(aligncntE), .rM(rE), .sM(sE), - .tM(tE), .normcntM(normcntE), .aeM(aeE), .bsM(bsE),.killprodM(killprodE), - .xzeroM(xzeroE), .yzeroM(yzeroE),.zzeroM(zzeroE),.xdenormM(xdenormE),.ydenormM(ydenormE), - .zdenormM(zdenormE),.xinfM(xinfE),.yinfM(yinfE),.zinfM(zinfE),.xnanM(xnanE),.ynanM(ynanE),.znanM(znanE), - .nanM(nanE),.sumshiftM(sumshiftE),.sumshiftzeroM(sumshiftzeroE), .prodinfM(prodinfE), .*); +fma2 UUT2(.ReadData1M(ReadData1E), .ReadData2M(ReadData2E), .ReadData3M(ReadData3E), .FrmM(FrmE), .ProdManM(ProdManE), + .AlignedAddendM(AlignedAddendE), .ProdExpM(ProdExpE), .AddendStickyM(AddendStickyE),.KillProdM(KillProdE), + .XZeroM(XZeroE),.YZeroM(YZeroE),.ZZeroM(ZZeroE),.XInfM(XInfE),.YInfM(YInfE),.ZInfM(ZInfE),.XNaNM(XNaNE),.YNaNM(YNaNE),.ZNaNM(ZNaNE), .*); initial begin fp = $fopen("/home/kparry/riscv-wally/wally-pipelined/src/fpu/FMA/tbgen/results.dat","w"); - ReadData1E = 64'hC1F0003F7FFFFFFF; - ReadData2E = 64'hB40DC94EA8FD6C48; - ReadData3E = 64'h82E1FC6B349D46FE; - ans = 64'h360DC9C4DFED9AF4; + ReadData1E = 64'hBFD000000000040F; + ReadData2E = 64'hC1CC00000003FFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h41AC000004040718; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -97,207 +96,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"305\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC34EFFFFFFFFFF7F; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hBFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"611\n"); - end - ReadData1E = 64'h37E0000001010000; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'h41C000FFFFFFFFEF; - ans = 64'h41C000FFFFFFFFEF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"917\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h402020000FFFFFFE; - ReadData3E = 64'hC49CC543222D7A93; - ans = 64'hC49CC543222D7A93; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1223\n"); - end - ReadData1E = 64'hC3DFC000FFFFFFFE; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'hFFE0000000000001; - ans = 64'hFFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1529\n"); - end - ReadData1E = 64'hBFCFB75018356166; - ReadData2E = 64'hB7EFFFFFF7E00000; - ReadData3E = 64'hC3DFFFFFFFF78000; - ans = 64'hC3DFFFFFFFF78000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1835\n"); + $fwrite(fp,"1000\n"); end ReadData1E = 64'h0000000000000000; ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'hC16FFFFFEEFFFFFF; - ans = 64'hC16FFFFFEEFFFFFF; + ReadData3E = 64'h411F000000008000; + ans = 64'h411F000000008000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -331,12 +135,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2141\n"); + $fwrite(fp,"2001\n"); end - ReadData1E = 64'h47FCF548236352E4; - ReadData2E = 64'h3F900003FDFFFFFF; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'h479CF54F5D16B2B7; + ReadData1E = 64'h000BFFFFFFEFFFFE; + ReadData2E = 64'h403007FFFE000000; + ReadData3E = 64'h434003FFFBFFFFFF; + ans = 64'h434003FFFBFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -370,3717 +174,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2447\n"); + $fwrite(fp,"3002\n"); end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2753\n"); - end - ReadData1E = 64'h40DFFFFFFFFEF7FF; - ReadData2E = 64'hC80000007EFFFFFF; - ReadData3E = 64'h4008BA14EB49A7C1; - ans = 64'hC8F000007EFF7BFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3059\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hB810000000600000; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h3FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3365\n"); - end - ReadData1E = 64'h40600000001FFF7E; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'hC00FFFFFFFFFFDFE; - ans = 64'hC00FFFFFFFFFFDFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3671\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hDBFFFBFFF8000000; - ReadData3E = 64'h4A6FFC00000000FF; - ans = 64'h4A6FFC00000000FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3977\n"); - end - ReadData1E = 64'h434FAE5B6ECDD96F; + ReadData1E = 64'h3FEFDB7068D7DF8E; ReadData2E = 64'h0010000000000001; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'h434FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4283\n"); - end - ReadData1E = 64'h43C5385F5ABC1E16; - ReadData2E = 64'hC9ABFFFFFFFFFEFF; - ReadData3E = 64'h3FC007FFFFFFBFFF; - ans = 64'hCD8291536F6499A9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4589\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'h402FFFF000000800; - ans = 64'h402FFFF000000800; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4895\n"); - end - ReadData1E = 64'h3FC6C487F45FB506; - ReadData2E = 64'h43E25F209A1547C0; - ReadData3E = 64'h8010000000000000; - ans = 64'h43BA24763E787145; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5201\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'hFFE0000000000001; - ans = 64'hFFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5507\n"); - end - ReadData1E = 64'hB48FFFFFFFFF8FFF; - ReadData2E = 64'h7FEFC00000000800; - ReadData3E = 64'hC34FE0000007FFFE; - ans = 64'hF48FBFFFFFFF98DF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5813\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h41E0040000FFFFFF; - ReadData3E = 64'hBFE0000000000001; - ans = 64'hBFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6119\n"); - end - ReadData1E = 64'h41D0040000400000; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'h3FCA69118D0A7A7B; - ans = 64'h3FCA69128D4A7A7F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6425\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3F9FEFFFC0000000; - ReadData3E = 64'h41DFE000007FFFFF; - ans = 64'h41DFE000007FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6731\n"); - end - ReadData1E = 64'h94BFEFFFFFFFFFFF; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'hC01FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7037\n"); - end - ReadData1E = 64'h388802CB750F8A0C; - ReadData2E = 64'h7FDBCDA5B681F4BB; - ReadData3E = 64'h4014727098BAA500; - ans = 64'h7874DCA9E98583AE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7343\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'h43DFDFFFFFFFFE00; - ans = 64'h43DFDFFFFFFFFE00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7649\n"); - end - ReadData1E = 64'h43CFFFFFFFDDFFFF; - ReadData2E = 64'hC3FFFFFFFFFFFFFE; - ReadData3E = 64'h0000000000000001; - ans = 64'hC7DFFFFFFFDDFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7955\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'h434FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8261\n"); - end - ReadData1E = 64'h407E0003FFFFFFFE; - ReadData2E = 64'hC05C000000000040; - ReadData3E = 64'hEEA0000004000003; - ans = 64'hEEA0000004000003; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8567\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h6EE0000000000FDF; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'h3FDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8873\n"); - end - ReadData1E = 64'hAD7000001FFFFF00; - ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'hC69FFFF400000000; - ans = 64'hC69FFFF400000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9179\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h403FC000000001FF; - ReadData3E = 64'h403717FDCAC5D1CA; - ans = 64'h403717FDCAC5D1CA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9485\n"); - end - ReadData1E = 64'h4015B627851BAB59; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'h4010000000000000; - ans = 64'h40156D89E146EAD6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9791\n"); - end - ReadData1E = 64'hC0301FBFFFFFFFFF; - ReadData2E = 64'h401000000000FFC0; - ReadData3E = 64'hDB30000000020040; - ans = 64'hDB30000000020040; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10097\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'h450FF03FFFFFFFFE; - ans = 64'h450FF03FFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10403\n"); - end - ReadData1E = 64'h3FFFF3FFFFFFFFFF; - ReadData2E = 64'h41CC8460F8D1AAC0; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10709\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'hC01FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"11015\n"); - end - ReadData1E = 64'h40040000000FFFFE; - ReadData2E = 64'h37EFFFBEFFFFFFFE; - ReadData3E = 64'hB7E0000000000081; - ans = 64'h37FFFFAEC01FFF78; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"11321\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hBCA0007FFFFFFEFF; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hBCAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"11627\n"); - end - ReadData1E = 64'hBFB4ECBCB6018A7A; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'h4000000000008FFF; - ans = 64'h3FFF589A1A5113AA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"11933\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC0AFFFFFFFF00000; - ReadData3E = 64'h3CAFFFF0000000FE; - ans = 64'h3CAFFFF0000000FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"12239\n"); - end - ReadData1E = 64'h43E01DFFFFFFFFFF; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'hC000000000000001; - ans = 64'h43D01DFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"12545\n"); - end - ReadData1E = 64'h434B07BEC47D5B28; - ReadData2E = 64'hC00FFFFF7FFEFFFF; - ReadData3E = 64'hFFEFFDFFFFE00000; - ans = 64'hFFEFFDFFFFE00000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"12851\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'hC1CFFFFFF8003FFE; - ans = 64'hC1CFFFFFF8003FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"13157\n"); - end - ReadData1E = 64'h96FB9A1C04CC829F; - ReadData2E = 64'hC03FFFDFFFFFFFC0; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"13463\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'h4010000000000000; - ans = 64'h4010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"13769\n"); - end - ReadData1E = 64'h4342F61031FB9231; - ReadData2E = 64'hFFF1AB8857B4DC76; - ReadData3E = 64'hBE8EFFFFFFFFFFEF; - ans = 64'hFFF9AB8857B4DC76; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"14075\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h41C29C11EE259365; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h3CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"14381\n"); - end - ReadData1E = 64'hC0300002000003FF; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'h43F2A5B9F0ADEE20; - ans = 64'h43F2A5B9F0ADEE20; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"14687\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC1DFFFFFFE0003FE; - ReadData3E = 64'h31800800000003FE; - ans = 64'h31800800000003FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"14993\n"); - end - ReadData1E = 64'h37FFFFFFFFFF87FF; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h3FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"15299\n"); - end - ReadData1E = 64'h400FFFF100000000; - ReadData2E = 64'hC3FFFFFFFFEFFDFF; - ReadData3E = 64'h37F00000800001FF; - ans = 64'hC41FFFF0FFEFFE07; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"15605\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'h405FFFBFFFE00000; - ans = 64'h405FFFBFFFE00000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"15911\n"); - end - ReadData1E = 64'hFFEF7FFFFFBFFFFE; - ReadData2E = 64'hC03EFFFDFFFFFFFF; - ReadData3E = 64'h7FE0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"16217\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'hC000000000000001; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"16523\n"); - end - ReadData1E = 64'h403E7FC2EFD29C71; - ReadData2E = 64'h40100007FFE00000; - ReadData3E = 64'hC3DFFFFFBFF00000; - ans = 64'hC3DFFFFFBFF00000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"16829\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3FFEC05C47FE2CB6; - ReadData3E = 64'h8010000000000001; - ans = 64'h8010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"17135\n"); - end - ReadData1E = 64'hCAAFFEFFFFFC0000; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'hC50FEFFFFFC00000; - ans = 64'hCAAFFEFFFFFC0002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"17441\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC069FFFFFFFFFFFE; - ReadData3E = 64'h4B10000000FFFFC0; - ans = 64'h4B10000000FFFFC0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"17747\n"); - end - ReadData1E = 64'hC020003F7FFFFFFF; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hC031003F7FFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"18053\n"); - end - ReadData1E = 64'hC0AFF7F7FFFFFFFF; - ReadData2E = 64'hC000001FFFFFFC00; - ReadData3E = 64'h7FE949C5A0E93D66; - ans = 64'h7FE949C5A0E93D66; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"18359\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'h801F1C5A52CE815D; - ans = 64'h801F1C5A52CE815D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"18665\n"); - end - ReadData1E = 64'h3EBF1FFFFFFFFFFE; - ReadData2E = 64'h3FF000008000007F; - ReadData3E = 64'hC340000000000001; - ans = 64'hC340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"18971\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h3FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"19277\n"); - end - ReadData1E = 64'h3E120003FFFFFFFE; - ReadData2E = 64'hC4A0000000010800; - ReadData3E = 64'h47EFFFF7FFF80000; - ans = 64'h47EFFFF7FFF80000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"19583\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3DCF24B20E238B01; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h000FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"19889\n"); - end - ReadData1E = 64'h7FD0021FFFFFFFFF; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'h000FFFFFFFF8001F; - ans = 64'h7FE0022000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20195\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h400D52B2928D25B3; - ReadData3E = 64'h802DFFFFFFFBFFFF; - ans = 64'h802DFFFFFFFBFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20501\n"); - end - ReadData1E = 64'h47FDFFFFFFFFBFFE; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h481DFFFFFFFFBFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20807\n"); - end - ReadData1E = 64'hBFF00000801FFFFF; - ReadData2E = 64'h40278FE8D20772ED; - ReadData3E = 64'hBFDDFFFFFFFC0000; - ans = 64'hC0287FE98EB5B94D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"21113\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'hC3AFFFA000000000; - ans = 64'hC3AFFFA000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"21419\n"); - end - ReadData1E = 64'h80000000000017FF; - ReadData2E = 64'hB7FFFBFFFFFFFDFF; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'h401FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"21725\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hBFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"22031\n"); - end - ReadData1E = 64'hBCAFDFFEFFFFFFFF; - ReadData2E = 64'h8027F6CED78A3A8C; - ReadData3E = 64'hC7EBC49640C1DDFC; - ans = 64'hC7EBC49640C1DDFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"22337\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h7FFFFE0000002000; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"22643\n"); - end - ReadData1E = 64'h3FFFFFFFFFFF6FFF; - ReadData2E = 64'h4010000000000000; - ReadData3E = 64'hC01000000000000D; - ans = 64'h400FFFFFFFFEDFE4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"22949\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC7F0FFFFC0000000; - ReadData3E = 64'h3CA000000000000F; - ans = 64'h3CA000000000000F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"23255\n"); - end - ReadData1E = 64'hC8003BFFFFFFFFFE; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hC8203BFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"23561\n"); - end - ReadData1E = 64'hC1DFF800000000FE; - ReadData2E = 64'h001BACBE988157F0; - ReadData3E = 64'h7750000FFFFFEFFE; - ans = 64'h7750000FFFFFEFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"23867\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'hC34FFFFE000FFFFF; - ans = 64'hC34FFFFE000FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"24173\n"); - end - ReadData1E = 64'hBF88E3F9BB250120; - ReadData2E = 64'hC3DEAB8649B5B386; - ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'h4377DB24D1EDE54A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"24479\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h3FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"24785\n"); - end - ReadData1E = 64'hC1DF000000001FFF; - ReadData2E = 64'h403CD1841E8DF396; - ReadData3E = 64'hB80FFFFFFDFFFFEE; - ans = 64'hC22BEAF7FD99A0CA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"25091\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hBF8FFFEBFFFFFFFE; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"25397\n"); - end - ReadData1E = 64'hBFE4B5C1CE0FC7F3; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'hBF9000FFFFFFFDFE; - ans = 64'hC334B5C1CE0FC7F3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"25703\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h41DFFFFFFFFFFFFF; - ReadData3E = 64'h80100200000007FF; - ans = 64'h80100200000007FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"26009\n"); - end - ReadData1E = 64'h3B70010000000007; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'h3EC0010000080008; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"26315\n"); - end - ReadData1E = 64'h3C5FF7FEFFFFFFFE; - ReadData2E = 64'h3FB000000000F7FF; - ReadData3E = 64'h802C007FFFFFFFFF; - ans = 64'h3C1FF7FF0001EF80; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"26621\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'h400E96FC00CCC222; - ans = 64'h400E96FC00CCC222; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"26927\n"); - end - ReadData1E = 64'hC1DFFFFFEEFFFFFE; - ReadData2E = 64'h3E8FE007FFFFFFFF; - ReadData3E = 64'h4000000000000000; - ans = 64'hC07FC007EF10FBBD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"27233\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hBFD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"27539\n"); - end - ReadData1E = 64'hC7EF87569D128E87; - ReadData2E = 64'h402DFFBFFFFFFFFF; - ReadData3E = 64'h274545C08EA0DAC8; - ans = 64'hC82D8EA224942B78; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"27845\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h47B6991E31F48059; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"28151\n"); - end - ReadData1E = 64'h433CCAE453CB7215; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'h3FE00000401FFFFF; - ans = 64'h469CCAE453CB7213; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"28457\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h41D8BE43AD466148; - ReadData3E = 64'h47F1000400000000; - ans = 64'h47F1000400000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"28763\n"); - end - ReadData1E = 64'hC08FFFFFFFE80000; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"29069\n"); - end - ReadData1E = 64'hB7E00000003DFFFF; - ReadData2E = 64'h41D07FFFFFFFF800; - ReadData3E = 64'hBFC00000000103FE; - ans = 64'hBFC00000000103FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"29375\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'h7FDFFFBFFFFFFFF7; - ans = 64'h7FDFFFBFFFFFFFF7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"29681\n"); - end - ReadData1E = 64'h1FCFFFFFF00FFFFF; - ReadData2E = 64'h3FD00000000047FE; - ReadData3E = 64'hBFF0000000000001; - ans = 64'hBFF0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"29987\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'h3CAFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30293\n"); - end - ReadData1E = 64'hC02FFFFFFFFFFE01; - ReadData2E = 64'hBFC0000380000000; - ReadData3E = 64'hB810020000000080; - ans = 64'h400000037FFFFF00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30599\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hBFD007FFFFFFEFFE; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30905\n"); - end - ReadData1E = 64'h408000000007FBFF; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'h453E07A9A16128DC; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"31211\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hA33FFF7FFFF7FFFE; - ReadData3E = 64'hE19000007FF00000; - ans = 64'hE19000007FF00000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"31517\n"); - end - ReadData1E = 64'h401001FFFFFFBFFE; - ReadData2E = 64'h7FF0000000000000; ReadData3E = 64'h0010000000000000; - ans = 64'h7FF0000000000000; + ans = 64'h001FEDB8346BEFC8; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4114,51 +213,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"31823\n"); - end - ReadData1E = 64'hC09FFFFFFFFBFF00; - ReadData2E = 64'h5FDFE08000000000; - ReadData3E = 64'h4140000007FFFFFC; - ans = 64'hE08FE07FFFFC02F1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"32129\n"); + $fwrite(fp,"4003\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'h404CD362AE8BB385; - ans = 64'hFFF8000000000000; + ReadData2E = 64'hA42E2E70507984E3; + ReadData3E = 64'h40B7207AF2BEF1E5; + ans = 64'h40B7207AF2BEF1E5; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4192,12 +252,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"32435\n"); + $fwrite(fp,"5004\n"); end - ReadData1E = 64'h912000000008FFFF; - ReadData2E = 64'hC3EA190F0D3FE460; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h3FEFFFFFFFFFFFFF; + ReadData1E = 64'h01B000000010000F; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h387C713BBBE91A17; + ans = 64'h387C713BBBE91A17; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4231,12 +291,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"32741\n"); + $fwrite(fp,"6005\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'h7FF8000000000001; + ReadData2E = 64'hBFB000400000007E; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4270,12 +330,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"33047\n"); + $fwrite(fp,"7006\n"); end - ReadData1E = 64'hD89FF80000003FFF; - ReadData2E = 64'h400000000003FFF7; - ReadData3E = 64'h649FFFFFFDFFFF80; - ans = 64'h649FFFFFFDFFFF80; + ReadData1E = 64'h802FFFFFFBFFFFF0; + ReadData2E = 64'hC020000000400000; + ReadData3E = 64'h41D800001FFFFFFF; + ans = 64'h41D800001FFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4309,10 +369,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"33353\n"); + $fwrite(fp,"8007\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC00BA8E5DA51A56B; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; ReadData3E = 64'h401FFFFFFFFFFFFE; ans = 64'h401FFFFFFFFFFFFE; FrmE = 3'b000; @@ -4348,12 +408,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"33659\n"); + $fwrite(fp,"9008\n"); end - ReadData1E = 64'hA9B4B64A1320AA03; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'h40CFFFFFFF7F7FFE; - ans = 64'h7FFFFFFFFFFFFFFF; + ReadData1E = 64'h000981D7D7EEDB6D; + ReadData2E = 64'hBFEF8B1210D829F4; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4387,12 +447,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"33965\n"); + $fwrite(fp,"10009\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3177FFFFFEFFFFFF; - ReadData3E = 64'hB80FFFFFFFEFFFFB; - ans = 64'hB80FFFFFFFEFFFFB; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'hC00FEFFFFFFFFFF8; + ans = 64'hC00FEFFFFFFFFFF8; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4426,12 +486,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"34271\n"); + $fwrite(fp,"11010\n"); end - ReadData1E = 64'hC80FFE0000FFFFFF; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'h8000000000000001; - ans = 64'h7FFFFFFFFFFFFFFE; + ReadData1E = 64'hC3C1ED45B6B0CC4E; + ReadData2E = 64'hC0156F00B466DDA8; + ReadData3E = 64'hCC4FBE8CA1DA0800; + ans = 64'hCC4FBE8CA1DA0800; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4465,12 +525,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"34577\n"); + $fwrite(fp,"12011\n"); end - ReadData1E = 64'h37E4E5EB09B9E630; - ReadData2E = 64'hC0D000000002007E; - ReadData3E = 64'h400FFFFFFFFEFFFC; - ans = 64'h400FFFFFFFFEFFFC; + ReadData1E = 64'hCCF0003FDFFFFFFF; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4504,12 +564,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"34883\n"); + $fwrite(fp,"13012\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'h3FFFFFF7FDFFFFFF; - ans = 64'h3FFFFFF7FDFFFFFF; + ReadData2E = 64'h3A9FFFFFFBFFFFFA; + ReadData3E = 64'h3FEFFFFFFFFFFEBE; + ans = 64'h3FEFFFFFFFFFFEBE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4543,12 +603,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"35189\n"); + $fwrite(fp,"14013\n"); end - ReadData1E = 64'hC01EFF7FFFFFFFFF; - ReadData2E = 64'h41CFFFFFFFFEFFEF; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hC1FEFF80000707F3; + ReadData1E = 64'h7FEBFFFF7FFFFFFE; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h43DFB5B0790F160D; + ans = 64'h7FEBFFFF7FFFFFFD; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4582,12 +642,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"35495\n"); + $fwrite(fp,"15014\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'h0010000000000000; - ans = 64'h0010000000000000; + ReadData2E = 64'hC1E0000840000000; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4621,12 +681,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"35801\n"); + $fwrite(fp,"16015\n"); end - ReadData1E = 64'h433C00000000003F; - ReadData2E = 64'h2C453D8FBBAA6DE2; - ReadData3E = 64'h4000400040000000; - ans = 64'h4000400040000000; + ReadData1E = 64'h381FE0003FFFFFFF; + ReadData2E = 64'hB5C000000001FFBF; + ReadData3E = 64'hC1CFE7FFFFFFFFFF; + ans = 64'hC1CFE7FFFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4660,12 +720,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"36107\n"); + $fwrite(fp,"17016\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'hC010000000000000; - ans = 64'hC010000000000000; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4699,12 +759,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"36413\n"); + $fwrite(fp,"18017\n"); end - ReadData1E = 64'h7FDBB7A2E8C34984; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'h40300000007FFFEF; - ans = 64'h402C890BA3E796AE; + ReadData1E = 64'h000FFFFFFE00001F; + ReadData2E = 64'h4340000000000201; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4738,12 +798,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"36719\n"); + $fwrite(fp,"19018\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h41EFFFFBFFFFFFFE; - ReadData3E = 64'h7D90080000008000; - ans = 64'h7D90080000008000; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h000FF7AA8514339E; + ans = 64'h000FF7AA8514339E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4777,12 +837,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"37025\n"); + $fwrite(fp,"20019\n"); end - ReadData1E = 64'h47FFFFFFDFFFEFFE; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; + ReadData1E = 64'h801F7FFFFFEFFFFF; + ReadData2E = 64'hBFDFFFFFFFD7FFFF; + ReadData3E = 64'h3F0000200000001E; + ans = 64'h3F0000200000001E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -4816,2079 +876,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"37331\n"); + $fwrite(fp,"21020\n"); end - ReadData1E = 64'hB80CCAF9E864CC74; - ReadData2E = 64'hBFCFFFFFFFE000FF; - ReadData3E = 64'h1B1FFFFF800FFFFF; - ans = 64'h37ECCAF9E8480260; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"37637\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'h43CE000000FFFFFF; - ans = 64'h43CE000000FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"37943\n"); - end - ReadData1E = 64'h401FFFFFF3FFFFFF; - ReadData2E = 64'hC2A00080001FFFFF; - ReadData3E = 64'h3FD0000000000000; - ans = 64'hC2D0007FFA1FCFEE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"38249\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'h8000000000000001; - ans = 64'h8000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"38555\n"); - end - ReadData1E = 64'h37EF8003FFFFFFFF; - ReadData2E = 64'h410FFFFF7FFFFDFE; - ReadData3E = 64'h3FF6752E3200448A; - ans = 64'h3FF6752E3200448A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"38861\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC3FFFD9E53F69891; - ReadData3E = 64'h4000000000000001; - ans = 64'h4000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"39167\n"); - end - ReadData1E = 64'h401CFA37F61AB9DE; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'hBD48AE33FF42F0BC; - ans = 64'hBD48AE33FF42F0BC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"39473\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC7EF912640B3BADD; - ReadData3E = 64'hDAF00DFFFFFFFFFF; - ans = 64'hDAF00DFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"39779\n"); - end - ReadData1E = 64'h3FD004DE1725440E; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40085\n"); - end - ReadData1E = 64'hC7E0800001000000; - ReadData2E = 64'h41F0000007FFFFDF; - ReadData3E = 64'hBFB0000080FFFFFF; - ans = 64'hC9E08000093FFFDE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40391\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'h4F2FE00000000003; - ans = 64'h4F2FE00000000003; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40697\n"); - end - ReadData1E = 64'hC3D4710A80C12BF3; - ReadData2E = 64'h0023BF0FB8CF836D; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBCA0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"41003\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"41309\n"); - end - ReadData1E = 64'hC7FFC00003FFFFFF; - ReadData2E = 64'hB7E0003FFFFFFFFF; - ReadData3E = 64'hFFEFDFFDFFFFFFFF; - ans = 64'hFFEFDFFDFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"41615\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC22FFBFFFFFFFFF0; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'hBFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"41921\n"); - end - ReadData1E = 64'hB80BFFFFFFFFFFFF; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'h00102000FFFFFFFE; - ans = 64'h34BC000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"42227\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h382F7F7FFFFFFFFF; - ReadData3E = 64'hC0124D9E33621DA3; - ans = 64'hC0124D9E33621DA3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"42533\n"); - end - ReadData1E = 64'h47F00FEFFFFFFFFE; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"42839\n"); - end - ReadData1E = 64'h43E838FD0E6F07BF; - ReadData2E = 64'h405FC00001FFFFFF; - ReadData3E = 64'hC85FFFFFFC004000; - ans = 64'hC85FFFFFFC004000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"43145\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'h37E000001FFF7FFE; - ans = 64'h37E000001FFF7FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"43451\n"); - end - ReadData1E = 64'hC034B21C8FB22DE2; - ReadData2E = 64'h001FBFFFFFFFFF7F; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'h806388B85692C933; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"43757\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"44063\n"); - end - ReadData1E = 64'h3FFFFFBFFFFFFBFF; - ReadData2E = 64'h3F00080000000000; - ReadData3E = 64'hC3D7F7D4202822B9; - ans = 64'hC3D7F7D4202822B9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"44369\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC030000100004000; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'h3FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"44675\n"); - end - ReadData1E = 64'h37E00000007FFF7F; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'hBFE585B80D43FB9F; - ans = 64'hBFE585B80D43FB9F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"44981\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h8E4FFFFFBFFFEFFF; - ReadData3E = 64'h404FFFFFFFFFE004; - ans = 64'h404FFFFFFFFFE004; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"45287\n"); - end - ReadData1E = 64'hC0302000000000FE; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'h4340000000000001; - ans = 64'h4340000000000003; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"45593\n"); - end - ReadData1E = 64'hBEF00000037FFFFF; - ReadData2E = 64'h46D010000000FFFF; - ReadData3E = 64'hB8B7FFFFFFFFFBFE; - ans = 64'hC5D0100003847FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"45899\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'h46C00002000007FF; - ans = 64'h46C00002000007FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"46205\n"); - end - ReadData1E = 64'h456FFFFFFFFFE03F; - ReadData2E = 64'h3803903647216A9D; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'h3D83903647215733; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"46511\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"46817\n"); - end - ReadData1E = 64'hB12FFFDFFFFFFC00; - ReadData2E = 64'hBF40000001000040; - ReadData3E = 64'hC3E002000FFFFFFF; - ans = 64'hC3E002000FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"47123\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h41EF7FFFFFFFFBFE; - ReadData3E = 64'hBFE0000000000000; - ans = 64'hBFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"47429\n"); - end - ReadData1E = 64'h3FC482064B9A8DE5; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'h371FFFFFDFFFFFF7; - ans = 64'hBFB482064B9A8DE5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"47735\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3800400007FFFFFE; - ReadData3E = 64'h3FF0000010000100; - ans = 64'h3FF0000010000100; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"48041\n"); - end - ReadData1E = 64'hFCFA1871A12F52FC; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'h7CEA1871A12F52FC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"48347\n"); - end - ReadData1E = 64'hC347798653317A97; - ReadData2E = 64'h3CA000000000000B; - ReadData3E = 64'hC3CD17AC96D91948; - ans = 64'hC3CD17AC96D91948; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"48653\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'hCC3000007FFFFFFF; - ans = 64'hCC3000007FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"48959\n"); - end - ReadData1E = 64'h37FFFF0000400000; - ReadData2E = 64'h47EFD7FFFFFFFFFE; - ReadData3E = 64'h0000000000000000; - ans = 64'h3FFFD701403FAFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"49265\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'h4340000000000001; - ans = 64'h4340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"49571\n"); - end - ReadData1E = 64'hBFDEB61745F36929; - ReadData2E = 64'h37E00004000FFFFE; - ReadData3E = 64'h434F7FFFFFFFFF7F; - ans = 64'h434F7FFFFFFFFF7F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"49877\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h40CFF7FFFFFF8000; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h3FD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50183\n"); - end - ReadData1E = 64'hB8016E821E7114DC; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'hB7F000000001FFF7; - ans = 64'h37F2DD043CE029BF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50489\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC1E00FFFFFF00000; - ReadData3E = 64'hACC10000000FFFFE; - ans = 64'hACC10000000FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50795\n"); - end - ReadData1E = 64'hBFB0010000000800; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h401040040000001F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"51101\n"); - end - ReadData1E = 64'h0010003FFFFFFEFF; - ReadData2E = 64'h43F000000040003F; - ReadData3E = 64'h4030000007FFBFFF; - ans = 64'h4030000007FFBFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"51407\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'hFD4003FFFFFFFFBE; - ans = 64'hFD4003FFFFFFFFBE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"51713\n"); - end - ReadData1E = 64'hC02000000020007E; - ReadData2E = 64'h4801000000000003; - ReadData3E = 64'h7FF0000000000001; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"52019\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"52325\n"); - end - ReadData1E = 64'h4000004000000FFF; - ReadData2E = 64'hB30E2B9A2B23911C; - ReadData3E = 64'hCCD50B44486F7C9A; - ans = 64'hCCD50B44486F7C9A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"52631\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h41F0000000000FFF; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'hBCAFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"52937\n"); - end - ReadData1E = 64'hB7FFFFFFFFFFE800; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'h401F7FDFFFFFFFFF; - ans = 64'h401F7FDFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"53243\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3DCFFFFEFFFFC000; - ReadData3E = 64'h4100000003FFFFFE; - ans = 64'h4100000003FFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"53549\n"); - end - ReadData1E = 64'hBB1F1FFFFFFFFFFF; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData1E = 64'hC3DF400000000000; + ReadData2E = 64'h400FFFFFFFFFFFFE; ReadData3E = 64'hC000000000000000; - ans = 64'hC000000000000000; + ans = 64'hC3FF3FFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -6922,51 +915,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"53855\n"); - end - ReadData1E = 64'h43DFFFFFFC7FFFFF; - ReadData2E = 64'hFFD0FFFFFFFFFFDF; - ReadData3E = 64'h4000000200000004; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"54161\n"); + $fwrite(fp,"22021\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'h47EFFF0000100000; - ans = 64'h47EFFF0000100000; + ReadData2E = 64'hBB100000000043FF; + ReadData3E = 64'hC66FFFFDFFEFFFFE; + ans = 64'hC66FFFFDFFEFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7000,12 +954,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"54467\n"); + $fwrite(fp,"23022\n"); end - ReadData1E = 64'h25EFFFFC000003FF; - ReadData2E = 64'hBC5EEAFC4E08B871; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; + ReadData1E = 64'h381FFFFFFF800004; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hB7F0FFFFEFFFFFFF; + ans = 64'h384F780000000003; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7039,12 +993,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"54773\n"); + $fwrite(fp,"24023\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h3FCCE16F872D5F85; + ReadData3E = 64'h8010000000000001; + ans = 64'h8010000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7078,12 +1032,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"55079\n"); + $fwrite(fp,"25024\n"); end - ReadData1E = 64'hAB4007FFEFFFFFFF; - ReadData2E = 64'hC1E3F7FFFFFFFFFF; - ReadData3E = 64'h408FFC0000000003; - ans = 64'h408FFC0000000003; + ReadData1E = 64'h40001000000003FF; + ReadData2E = 64'h88E00021FFFFFFFE; + ReadData3E = 64'hC3CFFFFFFEFFFFEE; + ans = 64'hC3CFFFFFFEFFFFEE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7117,10 +1071,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"55385\n"); + $fwrite(fp,"26025\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hBFCFFFFE000000FF; + ReadData2E = 64'h434FFFFFFFFFFFFF; ReadData3E = 64'h001FFFFFFFFFFFFE; ans = 64'h001FFFFFFFFFFFFE; FrmE = 3'b000; @@ -7156,89 +1110,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"55691\n"); + $fwrite(fp,"27026\n"); end - ReadData1E = 64'hC3D4002000000000; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'h47EFFFFFFF80FFFF; - ans = 64'h47EFFFFFFF80FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"55997\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h4EAFFFFFFFFFFFF8; - ReadData3E = 64'hBFC630E0EEA8577C; - ans = 64'hBFC630E0EEA8577C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"56303\n"); - end - ReadData1E = 64'h7FD00000000FFFFE; - ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'h3FF0000000000001; + ReadData1E = 64'hCCE008007FFFFFFF; + ReadData2E = 64'h7FE6E0FAC3DC6E26; + ReadData3E = 64'h401FFFFFFFFFFFFE; ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 @@ -7273,51 +1149,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"56609\n"); - end - ReadData1E = 64'h3FCFFDFFEFFFFFFF; - ReadData2E = 64'hC3ED67F287D7D96E; - ReadData3E = 64'hC8019F8A79446983; - ans = 64'hC8019F8A79446983; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"56915\n"); + $fwrite(fp,"28027\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'h3FD800000001FFFF; - ans = 64'h3FD800000001FFFF; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h365C89CD2693E00F; + ans = 64'h365C89CD2693E00F; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7351,12 +1188,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"57221\n"); + $fwrite(fp,"29028\n"); end - ReadData1E = 64'h4040000007FFFFFF; - ReadData2E = 64'h41100000007FFFFF; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'h43500000001FFFFF; + ReadData1E = 64'h4A5007E000000000; + ReadData2E = 64'h78A0007FFFFFDFFF; + ReadData3E = 64'h480FFBFFFFFFF7FF; + ans = 64'h7FF0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7390,12 +1227,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"57527\n"); + $fwrite(fp,"30029\n"); + end + ReadData1E = 64'h3F5FBFFFFFFFFFBE; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h7F5FBFFFFFFFFFBC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"31030\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'hC000000000000000; - ans = 64'hC000000000000000; + ReadData2E = 64'hC970007FFFF7FFFF; + ReadData3E = 64'hBFADEDDD33C767DE; + ans = 64'hBFADEDDD33C767DE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7429,12 +1305,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"57833\n"); + $fwrite(fp,"32031\n"); end - ReadData1E = 64'h7BFFFFFFFFC00080; - ReadData2E = 64'hA9BFFFFFFFF00003; - ReadData3E = 64'hBFC003FFFDFFFFFF; - ans = 64'hE5CFFFFFFFB00083; + ReadData1E = 64'hBFB88C67E6A945EB; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h4228CFFAFFD9F38A; + ans = 64'h7FF8000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7468,12 +1344,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"58139\n"); + $fwrite(fp,"33032\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC1EDEA3DDF65A262; - ReadData3E = 64'h8010000000000000; - ans = 64'h8010000000000000; + ReadData2E = 64'hC3FFFFDFFFFFFFF6; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7507,12 +1383,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"58445\n"); + $fwrite(fp,"34033\n"); end - ReadData1E = 64'h402FF7FFFFFFFBFF; - ReadData2E = 64'hC010000000000001; - ReadData3E = 64'hC7EFFFDFFFFDFFFF; - ans = 64'hC7EFFFDFFFFDFFFF; + ReadData1E = 64'hBA7A4D53CA171C35; + ReadData2E = 64'hBFE000000003FFFD; + ReadData3E = 64'h378FFEFFFFFFFFFF; + ans = 64'h3A6A4D53CA1DB005; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7546,12 +1422,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"58751\n"); + $fwrite(fp,"35034\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hBFDE20DF253846C3; - ReadData3E = 64'hBFCA3D8764E550D3; - ans = 64'hBFCA3D8764E550D3; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7585,12 +1461,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"59057\n"); + $fwrite(fp,"36035\n"); end - ReadData1E = 64'hC7700800000FFFFF; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'h47A00800000FFFFE; + ReadData1E = 64'h3FEFFFFFFFFF9FFE; + ReadData2E = 64'h801BD061987ED129; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7624,51 +1500,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"59363\n"); - end - ReadData1E = 64'h354000001FFFFFE0; - ReadData2E = 64'hB80FFFFFFFFFFFDD; - ReadData3E = 64'h400FFFFFFFFF7DFE; - ans = 64'h400FFFFFFFFF7DFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"59669\n"); + $fwrite(fp,"37036\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'hAF2FFFFF000FFFFF; - ans = 64'hAF2FFFFF000FFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'hBF60400000000006; + ans = 64'hBF60400000000006; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7702,12 +1539,402 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"59975\n"); + $fwrite(fp,"38037\n"); end - ReadData1E = 64'hEC8FFFFF00400000; - ReadData2E = 64'h3DB023FFFFFFFFFE; + ReadData1E = 64'h4020FFFFFEFFFFFF; + ReadData2E = 64'h39EFFF80000003FE; + ReadData3E = 64'h41C00000080003FF; + ans = 64'h41C00000080003FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"39038\n"); + end + ReadData1E = 64'h407FFFBFDFFFFFFE; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'h80AFFFBFDFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"40039\n"); + end + ReadData1E = 64'h0000000000000000; + ReadData2E = 64'hB5B086D0E753620B; + ReadData3E = 64'hB81FFFFFFFFD0000; + ans = 64'hB81FFFFFFFFD0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"41040\n"); + end + ReadData1E = 64'hC0EFFFFFFFFFDEFF; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h400000000FFFFFEF; + ans = 64'h4000000010003FEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"42041\n"); + end + ReadData1E = 64'h0000000000000000; + ReadData2E = 64'h3FFDEB8ECB05749D; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"43042\n"); + end + ReadData1E = 64'hC03FFFFFFFFFC800; + ReadData2E = 64'h7FDFFFFFFFFFE000; + ReadData3E = 64'h37F07FFFFFFFFFFC; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"44043\n"); + end + ReadData1E = 64'h0000000000000000; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"45044\n"); + end + ReadData1E = 64'hB80E8130553F5569; + ReadData2E = 64'hDA9FFFEFFFFFF000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h52BE812114A71B89; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"46045\n"); + end + ReadData1E = 64'h0000000000000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hC01000003FFFFFFE; + ans = 64'hC01000003FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"47046\n"); + end + ReadData1E = 64'h3955441F7A96C731; + ReadData2E = 64'h407E0000000003FF; + ReadData3E = 64'h4831FFFFF0000000; + ans = 64'h4831FFFFF0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"48047\n"); + end + ReadData1E = 64'h000000000EFFFFFF; + ReadData2E = 64'hBFE0000000000001; ReadData3E = 64'hC340000000000000; - ans = 64'hEA5023FF7F0047FE; + ans = 64'hC340000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7741,12 +1968,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60281\n"); + $fwrite(fp,"49048\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC340000000000000; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h3FF0000000000001; + ReadData2E = 64'h4029461559392D59; + ReadData3E = 64'h43E000201FFFFFFE; + ans = 64'h43E000201FFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7780,12 +2007,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60587\n"); + $fwrite(fp,"50049\n"); end - ReadData1E = 64'hC02FFFFFBFFFFFFE; - ReadData2E = 64'h40FFCFFFFFFFFFFE; - ReadData3E = 64'hBF8FFFFF7FFFE000; - ans = 64'hC13FCFFFC45FFFEC; + ReadData1E = 64'hC3FFFDFFFFFF8000; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hC7EFFFFFFFF7F800; + ans = 64'hC7EFFFFFFFF7F800; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7819,7 +2046,358 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60893\n"); + $fwrite(fp,"51050\n"); + end + ReadData1E = 64'h0000000000000000; + ReadData2E = 64'hB80BFFFFFFFFFFFD; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"52051\n"); + end + ReadData1E = 64'h3E5FC46308EAE50D; + ReadData2E = 64'hBFE000000000000E; + ReadData3E = 64'h402DFFFFFFF7FFFE; + ans = 64'h402DFFFFFF78EE72; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"53052\n"); + end + ReadData1E = 64'h0000000000000000; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"54053\n"); + end + ReadData1E = 64'h000400001FFFFFFF; + ReadData2E = 64'h5EF884D357974B28; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"55054\n"); + end + ReadData1E = 64'h0000000000000000; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'hB810000080000007; + ans = 64'hB810000080000007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"56055\n"); + end + ReadData1E = 64'h3CA0000003FFFFBF; + ReadData2E = 64'hB818B6E4C593E11B; + ReadData3E = 64'h406FFC007FFFFFFF; + ans = 64'h406FFC007FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"57056\n"); + end + ReadData1E = 64'h40BFFFFF5FFFFFFF; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hC0DFFFBF60000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"58057\n"); + end + ReadData1E = 64'h0000000000000000; + ReadData2E = 64'hBC4FFFFE00000000; + ReadData3E = 64'h381FEF7FFFFFFFFF; + ans = 64'h381FEF7FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"59058\n"); + end + ReadData1E = 64'h40D455A38879980C; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'h3802CF4B92AA4890; + ans = 64'hC10455A38879980B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"60059\n"); end ReadData1E = 64'h0000000000000000; ReadData2E = 64'h4893E0E3A2BD2F7E; @@ -7858,12 +2436,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"61199\n"); + $fwrite(fp,"61060\n"); end - ReadData1E = 64'h3FEC9DF9DF3C1BE6; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'h345C7595B01ECD68; - ans = 64'hC33C9DF9DF3C1BE8; + ReadData1E = 64'hC7EEFFFFDFFFFFFE; + ReadData2E = 64'h39C0000402000000; + ReadData3E = 64'h399000001FFFFC00; + ans = 64'hC1BF0007A3DFF7FA; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -7897,207 +2475,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"61505\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC50000000007DFFF; - ReadData3E = 64'h3801F71074B2A70B; - ans = 64'h3801F71074B2A70B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"61811\n"); - end - ReadData1E = 64'hBFCFFE000000000F; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'h432FFE000000000F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"62117\n"); - end - ReadData1E = 64'h403FFFFFFFF6FFFF; - ReadData2E = 64'h40107FFF7FFFFFFF; - ReadData3E = 64'hBB2C000002000000; - ans = 64'h40607FFF7FFB5BFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"62423\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'h43DFFFFFFFFFDFFB; - ans = 64'h43DFFFFFFFFFDFFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"62729\n"); - end - ReadData1E = 64'h4F600004FFFFFFFF; - ReadData2E = 64'h43DFFFFC1FFFFFFF; - ReadData3E = 64'h4010000000000001; - ans = 64'h535000030FFF64FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"63035\n"); + $fwrite(fp,"62061\n"); end ReadData1E = 64'h0000000000000000; ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h800FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -8131,12 +2514,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"63341\n"); + $fwrite(fp,"63062\n"); end - ReadData1E = 64'h800FFFFFBFFF8000; - ReadData2E = 64'hC00FFFFDFFFFFFFB; - ReadData3E = 64'hC000960D221BA850; - ans = 64'hC000960D221BA850; + ReadData1E = 64'h3F6FFFFFFFF7FFFB; + ReadData2E = 64'hC3FFFFFF7FC00000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC37FFFFF7FB7FFFB; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -8170,207 +2553,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"63647\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hBFDFFFFFFFFFF801; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"63953\n"); - end - ReadData1E = 64'h3FF4F85EB86B4EA1; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'h3FC0000000E00000; - ans = 64'hFFE4F85EB86B4EA1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"64259\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hC7EFFFFFFFEFFFDF; - ReadData3E = 64'hBCA0000200000000; - ans = 64'hBCA0000200000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"64565\n"); - end - ReadData1E = 64'hC00000000010000E; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'hBFD0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"64871\n"); - end - ReadData1E = 64'h4BFF00000000FFFE; - ReadData2E = 64'hBD4000001FFBFFFF; - ReadData3E = 64'hC0FFFFFEDFFFFFFF; - ans = 64'hC94F00003DF93FFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"65177\n"); + $fwrite(fp,"64063\n"); end ReadData1E = 64'h0000000000000000; ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'h35800000000001FE; - ans = 64'h35800000000001FE; + ReadData3E = 64'h0020100FFFFFFFFE; + ans = 64'h0020100FFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -8404,12 +2592,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"65483\n"); + $fwrite(fp,"65064\n"); end - ReadData1E = 64'hC0EFFC0007FFFFFE; - ReadData2E = 64'h3F30000000040100; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hC033FE000404007F; + ReadData1E = 64'hC7F00000000000DE; + ReadData2E = 64'h2010100000000002; + ReadData3E = 64'h3457F94CE0938298; + ans = 64'h3457F94CE0938298; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -8443,323 +2631,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"65789\n"); + $fwrite(fp,"66065\n"); end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'h3FDFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"66095\n"); - end - ReadData1E = 64'h7FEFFFFFFFFDFFF6; - ReadData2E = 64'h0020200100000000; - ReadData3E = 64'h37F00000101FFFFF; - ans = 64'h40202000FFFEFDFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"66401\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hD6803FFFFFFF7FFF; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"66707\n"); - end - ReadData1E = 64'h4071D1D196BCBBB4; + ReadData1E = 64'hC40FFFFFFEFFFFFF; ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'hC3EAC2BB016C9CB6; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"67013\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'h3FC0400000000002; - ReadData3E = 64'h407FFFFFFFFF01FF; - ans = 64'h407FFFFFFFFF01FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"67319\n"); - end - ReadData1E = 64'h41DDFBFFFFFFFFFF; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'h3CA0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"67625\n"); - end - ReadData1E = 64'h48A2E070EE32D8E0; - ReadData2E = 64'hBE1CD75F7BC7FF61; - ReadData3E = 64'h3FA2546AE9598A8E; - ans = 64'hC6D1036F1A80D304; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"67931\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'hB7F79A72F0763484; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"68237\n"); - end - ReadData1E = 64'h7FEFDA548DF1E93C; - ReadData2E = 64'h401FE0000001FFFE; - ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; ans = 64'h7FF0000000000000; FrmE = 3'b000; #10 @@ -8794,12 +2670,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"68543\n"); + $fwrite(fp,"67066\n"); end ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'hBFD0000000000000; - ans = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h41C3A25077EF03B4; + ReadData3E = 64'hC801FFEFFFFFFFFE; + ans = 64'hC801FFEFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -8833,89 +2709,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"68849\n"); + $fwrite(fp,"68067\n"); end - ReadData1E = 64'h38AC01FFFFFFFFFF; - ReadData2E = 64'hC70000400001FFFF; - ReadData3E = 64'h620FFFFFFE00FFFF; - ans = 64'h620FFFFFFE00FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"69155\n"); - end - ReadData1E = 64'h0000000000000000; - ReadData2E = 64'hFFE001FFFFFFFBFF; - ReadData3E = 64'h7FE0000000000000; - ans = 64'h7FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"69461\n"); - end - ReadData1E = 64'h400FFFB7FFFFFFFE; + ReadData1E = 64'h38B001FFFFFFFFFE; ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'hBEC78A1A64B5276F; + ReadData3E = 64'hBE3FFFFEFFFFE000; ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; #10 @@ -8950,12 +2748,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"69767\n"); + $fwrite(fp,"69068\n"); end ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h615FFFFFFEFEFFFF; - ReadData3E = 64'hC047FFF000000000; - ans = 64'hC047FFF000000000; + ReadData2E = 64'h288A287EBB310219; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -8989,12 +2787,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70073\n"); + $fwrite(fp,"70069\n"); end - ReadData1E = 64'hBCDFFFFFFFFFFFFA; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'h801FFFFFFFFFFFFF; + ReadData1E = 64'hBFB0000040000007; + ReadData2E = 64'h536FFFF000000006; + ReadData3E = 64'hC2E491BDD11A412A; + ans = 64'hD32FFFF07FFFC014; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -9028,2233 +2826,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70379\n"); - end - ReadData1E = 64'h400FFFF008000000; - ReadData2E = 64'hC0140007FFFFFFFF; - ReadData3E = 64'h3CA0FFFFFFFFEFFF; - ans = 64'hC033FFFE04FC01FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70685\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'h3F701FFFFEFFFFFF; - ans = 64'h3F701FFFFEFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70991\n"); - end - ReadData1E = 64'h37EFFFFFEFFE0000; - ReadData2E = 64'hBEDFFFF001FFFFFF; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"71297\n"); + $fwrite(fp,"71070\n"); end ReadData1E = 64'h0000000000000001; ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'h3CA0000000000001; - ans = 64'h3CA0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"71603\n"); - end - ReadData1E = 64'hBFC191453FCED168; - ReadData2E = 64'hBFCB56D15B3927BA; - ReadData3E = 64'h37E000000FFEFFFE; - ans = 64'h3F9E04778DA58583; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"71909\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBFEB401F3FDB027F; - ReadData3E = 64'hC340000000000001; - ans = 64'hC340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"72215\n"); - end - ReadData1E = 64'h469FDFFFFFFFFFFB; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'h7FE00800000007FF; - ans = 64'h7FE00800000007FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"72521\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3E0FFC0000007FFF; - ReadData3E = 64'h3A4E985408339F37; - ans = 64'h3A4E985408339F37; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"72827\n"); - end - ReadData1E = 64'h41CF7FFFFFFBFFFE; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'h01EF8000007BFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"73133\n"); - end - ReadData1E = 64'h986FFEFFFFFFFFFC; - ReadData2E = 64'h3F900000100000FF; - ReadData3E = 64'h4770000000100FFF; - ans = 64'h4770000000100FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"73439\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'hBFFFFFFFFFFFA000; - ans = 64'hBFFFFFFFFFFFA000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"73745\n"); - end - ReadData1E = 64'hCDFFFFFFE000003F; - ReadData2E = 64'h395ECB367C637D45; - ReadData3E = 64'h3FE0000000000001; - ans = 64'hC76ECB365D984705; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"74051\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'h801FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"74357\n"); - end - ReadData1E = 64'hEB7FFDFFFFFFFFFF; - ReadData2E = 64'hC3400000000000FC; - ReadData3E = 64'hB81FFFFFD0000000; - ans = 64'h6ECFFE00000001F7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"74663\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC1E04000000003FF; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'h401FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"74969\n"); - end - ReadData1E = 64'hC035623F6C0776D2; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'hBE3FFFFFFFF0007F; - ans = 64'hBE3FFFFFFFF0007F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"75275\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC80FEFFFFFDFFFFE; - ReadData3E = 64'h43DFFFFFFFFFBF80; - ans = 64'h43DFFFFFFFFFBF80; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"75581\n"); - end - ReadData1E = 64'h43C0007F7FFFFFFF; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'h8000000000000000; - ans = 64'h03F0007F7FFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"75887\n"); - end - ReadData1E = 64'hC91F80000000001F; - ReadData2E = 64'h5944D35BDA88AE28; - ReadData3E = 64'hC1C1000000080000; - ans = 64'hE274800E6B1E8B84; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"76193\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'hC1FFFBFFFEFFFFFF; - ans = 64'hC1FFFBFFFEFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"76499\n"); - end - ReadData1E = 64'h43EFACB926D1E997; - ReadData2E = 64'hC3C9C7B965E1B911; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hC7C984A249246658; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"76805\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'h000FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"77111\n"); - end - ReadData1E = 64'hC000000000000FFA; - ReadData2E = 64'h41F0000000020007; - ReadData3E = 64'hC1E0000008000080; - ans = 64'hC204000002021021; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"77417\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBFECD4AA110D5FEE; - ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'hC00FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"77723\n"); - end - ReadData1E = 64'hC80F8001FFFFFFFF; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'hC7F0000000024000; - ans = 64'hC7F0000000024004; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"78029\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC02FFFFFFFFEFFDE; - ReadData3E = 64'h313FFFFFF000001F; - ans = 64'h313FFFFFF000001F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"78335\n"); - end - ReadData1E = 64'h3FDFFF00003FFFFF; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"78641\n"); - end - ReadData1E = 64'hC020000007FFFFF7; - ReadData2E = 64'hBF23E9A5A4CF72CF; - ReadData3E = 64'h43C003FFFDFFFFFF; - ans = 64'h43C003FFFDFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"78947\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'h43DFFFFFFFDFBFFE; - ans = 64'h43DFFFFFFFDFBFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"79253\n"); - end - ReadData1E = 64'h3FC0001000000000; - ReadData2E = 64'h001000001EFFFFFF; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h3CAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"79559\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'h8000000000000000; - ans = 64'h0000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"79865\n"); - end - ReadData1E = 64'h47EFFFFFFFFFFBFF; - ReadData2E = 64'h3CA000000000FFC0; - ReadData3E = 64'hBFE0000008000800; - ans = 64'h44A000000000FDBF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80171\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h13E00001FFFFFFFE; - ReadData3E = 64'h4000000000000000; - ans = 64'h4000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80477\n"); - end - ReadData1E = 64'h43DFE45B42DC9C12; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'h2DC0000100000008; - ans = 64'h43BFE45B42DC9C14; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80783\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC3DFFFFFFFFF01FF; - ReadData3E = 64'h796FFFFDDFFFFFFF; - ans = 64'h796FFFFDDFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"81089\n"); - end - ReadData1E = 64'hBFD000100001FFFF; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"81395\n"); - end - ReadData1E = 64'h47FFFFFE7FFFFFFF; - ReadData2E = 64'hBCA46299E234BA33; - ReadData3E = 64'hFFD006FFFFFFFFFE; - ans = 64'hFFD006FFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"81701\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'h7FDFFFFEFFFFFEFF; - ans = 64'h7FDFFFFEFFFFFEFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"82007\n"); - end - ReadData1E = 64'h4020000000007BFE; - ReadData2E = 64'h800C000000001FFE; - ReadData3E = 64'hBCA0000000000000; - ans = 64'hBCA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"82313\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"82619\n"); - end - ReadData1E = 64'h3DBFE000000000FE; - ReadData2E = 64'h3FE000000003FFFE; - ReadData3E = 64'h41AFACA8D40D6262; - ans = 64'h41AFACA8D40D6262; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"82925\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC07FFFC00001FFFF; - ReadData3E = 64'hBFF0000000000001; - ans = 64'hBFF0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"83231\n"); - end - ReadData1E = 64'hBFC28E53D1BD64E5; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'hC3C8A4AE1DD1A4C3; - ans = 64'hC3C8A4AE1DD1A4C3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"83537\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC2E18FA43B6CB543; - ReadData3E = 64'h401000000000006E; - ans = 64'h401000000000006E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"83843\n"); - end - ReadData1E = 64'hFFFFFFFFFF800007; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'hC34FFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFF800007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"84149\n"); - end - ReadData1E = 64'h3FDFFFE1FFFFFFFE; - ReadData2E = 64'h3B90004000000006; - ReadData3E = 64'h381F000000000001; - ans = 64'h3B800030FFC40005; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"84455\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'h311000001FFEFFFF; - ans = 64'h311000001FFEFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"84761\n"); - end - ReadData1E = 64'h3FE0000010007FFF; - ReadData2E = 64'h37D000000003EFFE; - ReadData3E = 64'h0010000000000001; - ans = 64'h37C0000010046FFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"85067\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"85373\n"); - end - ReadData1E = 64'hC7D2FD16AA96B96D; - ReadData2E = 64'hC1D000010000003F; - ReadData3E = 64'h37EFD7FFFFFFFFFF; - ans = 64'h49B2FD17DA682461; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"85679\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h5F3FFE000000001F; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h3FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"85985\n"); - end - ReadData1E = 64'hB804815C1063C1E2; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'h449FFFC0000000FE; - ans = 64'h449FFFC0000000FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"86291\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h41FFFFFF00000004; - ReadData3E = 64'hDFB0000800000007; - ans = 64'hDFB0000800000007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"86597\n"); - end - ReadData1E = 64'hC0F04000001FFFFF; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'h4340000000000000; - ans = 64'h433FFFFFFFFEFC00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"86903\n"); - end - ReadData1E = 64'h37FAF5DF12024664; - ReadData2E = 64'h4CDFFFFFFFFFC010; - ReadData3E = 64'hBF47F140CD2482F2; - ans = 64'h44EAF5DF12021086; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"87209\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'hC1F00000002001FF; - ans = 64'hC1F00000002001FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"87515\n"); - end - ReadData1E = 64'h43EFFFFFFFBDFFFF; - ReadData2E = 64'h40164FFAE8166810; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'h44164FFAE7E8631A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"87821\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; ReadData3E = 64'hC34FFFFFFFFFFFFE; ans = 64'hC34FFFFFFFFFFFFE; FrmE = 3'b000; @@ -11290,12 +2865,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"88127\n"); + $fwrite(fp,"72071\n"); end - ReadData1E = 64'h40310000000003FE; - ReadData2E = 64'h308100000000003F; - ReadData3E = 64'h526FFFFFFFEF8000; - ans = 64'h526FFFFFFFEF8000; + ReadData1E = 64'hD07FFFDFFFF7FFFE; + ReadData2E = 64'hC0FFEFFFFFFDFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h518FEFE00FF603FF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -11329,12 +2904,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"88433\n"); + $fwrite(fp,"73072\n"); end ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBFCF31CDEA17BD81; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h3F3C9F5CDCE9CE20; + ans = 64'h3F3C9F5CDCE9CE20; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -11368,12 +2943,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"88739\n"); + $fwrite(fp,"74073\n"); end - ReadData1E = 64'h801647EF7B8F4A27; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'hC02F0007FFFFFFFF; - ans = 64'hC02F0007FFFFFFFF; + ReadData1E = 64'h001FFFC000000100; + ReadData2E = 64'h43EFFF0000007FFF; + ReadData3E = 64'h401241F1B1CB063F; + ans = 64'h401241F1B1CB063F; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -11407,3910 +2982,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"89045\n"); + $fwrite(fp,"75074\n"); end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC7FE9B19A720FB35; - ReadData3E = 64'h48000000001FFFEE; - ans = 64'h48000000001FFFEE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"89351\n"); - end - ReadData1E = 64'h71A7FFFFFFFFFBFF; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'hC010000000000001; - ans = 64'h71B7FFFFFFFFFBFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"89657\n"); - end - ReadData1E = 64'h434E071E5491DB00; - ReadData2E = 64'hC3C233D6818376D1; - ReadData3E = 64'h40000FFFFDFFFFFF; - ans = 64'hC72114A5B10BB81C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"89963\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'hBFEFFC000001FFFF; - ans = 64'hBFEFFC000001FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90269\n"); - end - ReadData1E = 64'h45BFFFFFFFBFFF7E; - ReadData2E = 64'h80000001FFFFFFEF; - ReadData3E = 64'hFFFFFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90575\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'h4340000000000000; - ans = 64'h4340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90881\n"); - end - ReadData1E = 64'h3E299454FA252AF8; - ReadData2E = 64'hC7EFFFFFFFFDFE00; - ReadData3E = 64'h0CF00001FF000000; - ans = 64'hC6299454FA239019; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"91187\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h0B3FFFFFFF0001FF; - ReadData3E = 64'h3FD0000000000000; - ans = 64'h3FD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"91493\n"); - end - ReadData1E = 64'h801C00000000FFFF; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'h380FFFFF0000000F; - ans = 64'h380FFFFF0000000F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"91799\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h434FFF7FFF000000; - ReadData3E = 64'hBE90000003FF7FFE; - ans = 64'hBE90000003FF7FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"92105\n"); - end - ReadData1E = 64'h43F0400000007FFF; - ReadData2E = 64'h4010000000000000; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'h4410400000007FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"92411\n"); - end - ReadData1E = 64'h3FCFFFFFFFFFFFFE; - ReadData2E = 64'hB8BFFFFF000000FF; - ReadData3E = 64'hFFFB36B5B1C510AD; - ans = 64'hFFFB36B5B1C510AD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"92717\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'hFFD0207FFFFFFFFF; - ans = 64'hFFD0207FFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"93023\n"); - end - ReadData1E = 64'h4850000040007FFE; - ReadData2E = 64'hBD4000000000004F; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"93329\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'hC010000000000001; - ans = 64'hC010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"93635\n"); - end - ReadData1E = 64'hBFC3FFFFEFFFFFFF; - ReadData2E = 64'hBCD0000000100000; - ReadData3E = 64'hBFDFFFFFFF800FFE; - ans = 64'hBFDFFFFFFF800FFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"93941\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hE3E000000001FFFF; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBCA0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"94247\n"); - end - ReadData1E = 64'hC03FFFF7FEFFFFFF; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'hBFCF0003FFFFFFFE; - ans = 64'hC07003DBFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"94553\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC1D00003FFFFEFFF; - ReadData3E = 64'h380CDB22F03FB3C7; - ans = 64'h380CDB22F03FB3C7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"94859\n"); - end - ReadData1E = 64'hBCAE007FFFFFFFFE; - ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hC000000000000003; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"95165\n"); - end - ReadData1E = 64'h0027CED0481828DA; - ReadData2E = 64'hC018000000008000; - ReadData3E = 64'h408FFF7FFFF7FFFF; - ans = 64'h408FFF7FFFF7FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"95471\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'h427FFFFDFFFFFFFA; - ans = 64'h427FFFFDFFFFFFFA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"95777\n"); - end - ReadData1E = 64'hCC1FFFFFDFFFFDFE; - ReadData2E = 64'hC0001FFFFFBFFFFF; - ReadData3E = 64'hFFE0000000000001; - ans = 64'hFFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"96083\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'h400FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"96389\n"); - end - ReadData1E = 64'h3F8B26434DA23461; - ReadData2E = 64'h48A46669B857A915; - ReadData3E = 64'h483000FFBFFFFFFE; - ans = 64'h48494F4D99000EF8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"96695\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h402FEFFFFFFDFFFF; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'h0020000000000007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"97001\n"); - end - ReadData1E = 64'h406FFF7FFFFFFFEF; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'h75801FFBFFFFFFFF; - ans = 64'h75801FFBFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"97307\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hFFF0000000080004; - ReadData3E = 64'h7FFFFFFFFFFEDFFF; - ans = 64'h7FFFFFFFFFFEDFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"97613\n"); - end - ReadData1E = 64'h47FFFFFFFFFFC400; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h4B5FFFFFFFFFC3FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"97919\n"); - end - ReadData1E = 64'h39D000007FFFFFEF; - ReadData2E = 64'hC19A30C8DE8EA4F0; - ReadData3E = 64'hC3FFF24324316780; - ans = 64'hC3FFF24324316780; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"98225\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'h57E00000001FFFBF; - ans = 64'h57E00000001FFFBF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"98531\n"); - end - ReadData1E = 64'h800890D34C5F8261; - ReadData2E = 64'h43EDFFFFFFFFFBFE; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'h434FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"98837\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hBFFFFFFFFFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"99143\n"); - end - ReadData1E = 64'hA38000FFFFF7FFFF; - ReadData2E = 64'hB7F8000003FFFFFF; - ReadData3E = 64'hBFDFF000000001FE; - ans = 64'hBFDFF000000001FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"99449\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC1316F6AD91EBB89; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'h8010000000116F69; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"99755\n"); - end - ReadData1E = 64'hB7FFFF9FFFFFFFFF; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'hBBC0800000001FFF; - ans = 64'hF7EFFFA000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"100061\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h41DFFF01FFFFFFFF; - ReadData3E = 64'hBCA1790765D39159; - ans = 64'hBCA1790765D39159; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"100367\n"); - end - ReadData1E = 64'h47FF7FFFEFFFFFFF; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'hBFE0000000000001; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"100673\n"); - end - ReadData1E = 64'h47F0007FFFFFFFFB; - ReadData2E = 64'h7FD000007FFDFFFF; - ReadData3E = 64'h41CFFFF00003FFFF; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"100979\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'h4010004000100000; - ans = 64'h4010004000100001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"101285\n"); - end - ReadData1E = 64'h3F2FFFBFFFFC0000; - ReadData2E = 64'hBA446C0F1185D142; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'hC01FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"101591\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"101897\n"); - end - ReadData1E = 64'h40302007FFFFFFFE; - ReadData2E = 64'h401BF920C8395318; - ReadData3E = 64'h2C1FFFEFFFFEFFFE; - ans = 64'h405C3121065A29D7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"102203\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC3CFBF7FFFFFFFFF; - ReadData3E = 64'h0000000000000000; - ans = 64'h80AFBF7FFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"102509\n"); - end - ReadData1E = 64'h4010000020000040; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'hC5100000010000FF; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"102815\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h7FEF800002000000; - ReadData3E = 64'h41C020001FFFFFFF; - ans = 64'h41C020001FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"103121\n"); - end - ReadData1E = 64'hC226A456871BA660; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"103427\n"); - end - ReadData1E = 64'hA8FA294A615C92B1; - ReadData2E = 64'hC0080000003FFFFF; - ReadData3E = 64'hC000007FFFFFFEFF; - ans = 64'hC000007FFFFFFEFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"103733\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'hC7EFFFFF80FFFFFE; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"104039\n"); - end - ReadData1E = 64'hB7E0800001000000; - ReadData2E = 64'hB9240000003FFFFE; - ReadData3E = 64'h4010000000000000; - ans = 64'h4010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"104345\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'hBFE0000000000001; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"104651\n"); - end - ReadData1E = 64'hB80F000000000008; - ReadData2E = 64'h3AF0407FFFFFFFFF; - ReadData3E = 64'h3FE1FC3C8689A584; - ans = 64'h3FE1FC3C8689A584; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"104957\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h80169DE23509F708; - ReadData3E = 64'h7FF0000000000001; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"105263\n"); - end - ReadData1E = 64'h43EF7FFFFFFFF7FE; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'h7FFFFFFFFFEF0000; - ans = 64'h7FFFFFFFFFEF0000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"105569\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h402FFFFFFFEFFFF8; - ReadData3E = 64'h43D42686CD65475F; - ans = 64'h43D42686CD65475F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"105875\n"); - end - ReadData1E = 64'hC04FFFFFFFFC7FFF; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hBCAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"106181\n"); - end - ReadData1E = 64'hB7E00080000001FF; - ReadData2E = 64'h41F07FFFFFFFFFFE; - ReadData3E = 64'h3FF6DBA784E8283D; - ans = 64'h3FF6DBA784E8283D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"106487\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'h7FFFF3FFFFFFFFFE; - ans = 64'h7FFFF3FFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"106793\n"); - end - ReadData1E = 64'hB800007FFDFFFFFE; - ReadData2E = 64'h3FC0E7ABB4FEA446; - ReadData3E = 64'hC000000000000001; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"107099\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'h3FDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"107405\n"); - end - ReadData1E = 64'hBFF15CA7EE372F75; - ReadData2E = 64'hC1FFFFFFFFFFBFBF; - ReadData3E = 64'hC0BFFFFE001FFFFF; - ans = 64'h42015CA6EE371C97; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"107711\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBE00000FFFFFFFBF; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"108017\n"); - end - ReadData1E = 64'hBFD0E4DFE770D252; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'h8DC0000001FFFEFE; - ans = 64'h8DC0000001FFFEFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"108323\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3E500200FFFFFFFF; - ReadData3E = 64'hC1D0003FFFFFFEFE; - ans = 64'hC1D0003FFFFFFEFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"108629\n"); - end - ReadData1E = 64'hBFD03FFFFBFFFFFE; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h3CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"108935\n"); - end - ReadData1E = 64'hB810011FFFFFFFFF; - ReadData2E = 64'h3CAFFFFFF7FFFFFC; - ReadData3E = 64'h41DFFFFDFFFFBFFE; - ans = 64'h41DFFFFDFFFFBFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"109241\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'h40008000003FFFFF; - ans = 64'h40008000003FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"109547\n"); - end - ReadData1E = 64'hBFF0000000022000; - ReadData2E = 64'h42F63997A8DDC3FE; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'hC2F63997A8E0B784; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"109853\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hBCAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"110159\n"); - end - ReadData1E = 64'hC3DE554489E9FBEB; - ReadData2E = 64'hB7FF8000000003FF; - ReadData3E = 64'h3FFF32CBAFD63CA0; - ans = 64'h3FFF32CBAFD63CA0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"110465\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h4C1FFC003FFFFFFE; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'h434FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"110771\n"); - end - ReadData1E = 64'hC80FFFF800000000; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'hC0098E4ADD5BCBCE; - ans = 64'hC0098E4ADD5BCBCE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"111077\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h43DFFFF7FFC00000; - ReadData3E = 64'hFFE00000000003DF; - ans = 64'hFFE00000000003DF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"111383\n"); - end - ReadData1E = 64'h3CAFFFFFFFFC07FF; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'h8010000000000001; - ans = 64'hB95FFFFFFFFC07FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"111689\n"); - end - ReadData1E = 64'hC15FFFF5FFFFFFFE; - ReadData2E = 64'hC02DFFFFFFFFFFBF; - ReadData3E = 64'h41D08607E1470F0C; - ans = 64'h41D266074B470F08; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"111995\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'h41C386E10783B27B; - ans = 64'h41C386E10783B27B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"112301\n"); - end - ReadData1E = 64'hFFFB45BA74ABDCC5; - ReadData2E = 64'h0004C737D93533CD; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hFFFB45BA74ABDCC5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"112607\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h3CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"112913\n"); - end - ReadData1E = 64'h3FC7FFFFFFE00000; - ReadData2E = 64'hBF7FBFFFFFFFFFFF; - ReadData3E = 64'h37EFFFFE000FFFFF; - ans = 64'hBF57CFFFFFE03FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"113219\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC03BFFFFFFFFFFF0; - ReadData3E = 64'hC340000000000000; - ans = 64'hC340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"113525\n"); - end - ReadData1E = 64'hC02528035E1CC78A; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'h00000000FFFFBFFF; - ans = 64'h3CE528035E1CC789; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"113831\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h40100000000003BF; - ReadData3E = 64'h4800000001FFFFFC; - ans = 64'h4800000001FFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"114137\n"); - end - ReadData1E = 64'h40C00003FFFEFFFE; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'hC0A00003FFFEFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"114443\n"); - end - ReadData1E = 64'h3815F31AA300BAC5; - ReadData2E = 64'h00282D6384BE04FD; - ReadData3E = 64'h40A10711683D5DEF; - ans = 64'h40A10711683D5DEF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"114749\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'hB7E0000000000202; - ans = 64'hB7E0000000000202; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"115055\n"); - end - ReadData1E = 64'hBBCFFFFFFFFBFFFA; - ReadData2E = 64'h95C71697A05241D8; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h3FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"115361\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'h8010000000000001; - ans = 64'h8010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"115667\n"); - end - ReadData1E = 64'h3FC6AF6973D6EEE0; - ReadData2E = 64'h81DFFFF000007FFF; - ReadData3E = 64'hC02FFFFFBBFFFFFE; - ans = 64'hC02FFFFFBBFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"115973\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h4060003C00000000; - ReadData3E = 64'h4010000000000001; - ans = 64'h4010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"116279\n"); - end - ReadData1E = 64'hBFF0000000011FFE; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'hA04FFFFFFFFFEFF6; - ans = 64'h3FE0000000011FFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"116585\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h9550001FFFFFFFFF; - ReadData3E = 64'hBFE8C4D9D2CF8887; - ans = 64'hBFE8C4D9D2CF8887; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"116891\n"); - end - ReadData1E = 64'h3FB001FFFFFBFFFF; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"117197\n"); - end - ReadData1E = 64'hBDC941E1BC02969D; - ReadData2E = 64'h3F5C6E5429567A7D; - ReadData3E = 64'h7FF000000002003F; - ans = 64'h7FF800000002003F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"117503\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'h3D63D5CA425674DB; - ans = 64'h3D63D5CA425674DB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"117809\n"); - end - ReadData1E = 64'hB80C7A2531F5CBA2; - ReadData2E = 64'hB7F00000000040FF; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hBFD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"118115\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h000FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"118421\n"); - end - ReadData1E = 64'h880FFFFFCFFFFFFE; - ReadData2E = 64'h2D700000001FFFDE; - ReadData3E = 64'hBCAFFC000007FFFF; - ans = 64'hBCAFFC000007FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"118727\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC3E00007FFFFFDFF; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hC00FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"119033\n"); - end - ReadData1E = 64'hC031DFFFFFFFFFFE; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'h429000000007FFFA; - ans = 64'h429000000008477A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"119339\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h41C0000000FDFFFF; - ReadData3E = 64'h3FDFFC0000000002; - ans = 64'h3FDFFC0000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"119645\n"); - end - ReadData1E = 64'hC010000008100000; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData1E = 64'hC03A4936E0ECAAA8; + ReadData2E = 64'h001FFFFFFFFFFFFE; ReadData3E = 64'hFFF0000000000000; ans = 64'hFFF0000000000000; FrmE = 3'b000; @@ -15346,51 +3021,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"119951\n"); - end - ReadData1E = 64'hBE67FFFF7FFFFFFF; - ReadData2E = 64'hC3FFFFFE003FFFFF; - ReadData3E = 64'h3E1FFFE003FFFFFE; - ans = 64'h4277FFFE003007FD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"120257\n"); + $fwrite(fp,"76075\n"); end ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'h403FFFEFFFF80000; - ans = 64'h403FFFEFFFF80000; + ReadData2E = 64'h38100000004001FE; + ReadData3E = 64'h3FB03FFFFBFFFFFF; + ans = 64'h3FB03FFFFBFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -15424,12 +3060,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"120563\n"); + $fwrite(fp,"77076\n"); end - ReadData1E = 64'hBFF55E36003CB592; - ReadData2E = 64'h4913B02D75F6CF08; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'hC91A4B2928CD1BF3; + ReadData1E = 64'h000000FFFFF7FFFE; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h60B000002000003F; + ans = 64'h60B000002000003F; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -15463,12 +3099,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"120869\n"); + $fwrite(fp,"78077\n"); end ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h4BD0001FFF800000; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -15502,12 +3138,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"121175\n"); + $fwrite(fp,"79078\n"); end - ReadData1E = 64'hBF8FFFFFFFFFE01F; - ReadData2E = 64'h43D000000000000B; - ReadData3E = 64'h3FBF800FFFFFFFFE; - ans = 64'hC36FFFFFFFFFE035; + ReadData1E = 64'h3EB000003FFFEFFE; + ReadData2E = 64'hB7E135770E9EE4D3; + ReadData3E = 64'h95881B3BCC03A870; + ans = 64'hB6A135775374AFD6; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -15541,10 +3177,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"121481\n"); + $fwrite(fp,"80079\n"); end ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC01FFFFDFFFFDFFF; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; ReadData3E = 64'h3FFFFFFFFFFFFFFE; ans = 64'h3FFFFFFFFFFFFFFE; FrmE = 3'b000; @@ -15580,12 +3216,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"121787\n"); + $fwrite(fp,"81080\n"); end - ReadData1E = 64'hBFAFEFFFFFEFFFFE; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'h3FDFFFFFFDFFF000; - ans = 64'h3FE1FEFFFEFEF800; + ReadData1E = 64'h403FFFFFFFFFFFFC; + ReadData2E = 64'hC25000000FFFE000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC2A000000FFFDFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -15619,7 +3255,1528 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"122093\n"); + $fwrite(fp,"82081\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hFFE347DA0B10D030; + ans = 64'hFFE347DA0B10D030; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"83082\n"); + end + ReadData1E = 64'hBC00000000880000; + ReadData2E = 64'hBFFFEFFFFFFFDFFE; + ReadData3E = 64'hB80FFFFFFFFE0000; + ans = 64'h3C0FF000010F57FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"84083\n"); + end + ReadData1E = 64'hC0193E1A6DC9C2C1; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'hC0027C34DB93857F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"85084\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'h41E00000003FFFFC; + ReadData3E = 64'h47FD1458FE8ED30E; + ans = 64'h47FD1458FE8ED30E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"86085\n"); + end + ReadData1E = 64'hBFDFFF80000003FE; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h7FD0008800000000; + ans = 64'h7FD0008800000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"87086\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'hC3F000200FFFFFFF; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"88087\n"); + end + ReadData1E = 64'h41B00000001000FE; + ReadData2E = 64'hB7E0000400001FFE; + ReadData3E = 64'hC010001FFFFFFF7F; + ans = 64'hC010001FFFFFFF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"89088\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"90089\n"); + end + ReadData1E = 64'h7FE000000000807F; + ReadData2E = 64'h41C010000001FFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"91090\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h3FBF547B54C67FB3; + ans = 64'h3FBF547B54C67FB3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"92091\n"); + end + ReadData1E = 64'h4F20040000000800; + ReadData2E = 64'hBC8FFFFFFFE003FF; + ReadData3E = 64'h7750A00000000000; + ans = 64'h7750A00000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"93092\n"); + end + ReadData1E = 64'h47300407FFFFFFFF; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h47600407FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"94093\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'h4097FC2088D276EC; + ReadData3E = 64'h4030000000000042; + ans = 64'h4030000000000042; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"95094\n"); + end + ReadData1E = 64'hBFD0000FFFFF7FFE; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h37E1E8C203C8034D; + ans = 64'hC320000FFFFF7FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"96095\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'h7E5FFFFFDBFFFFFF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"97096\n"); + end + ReadData1E = 64'h3BDFFFFBFFEFFFFF; + ReadData2E = 64'h3EB0000100100000; + ReadData3E = 64'h3B6FF0000000003F; + ans = 64'h3B6FF0FFFFF000BD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"98097\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"99098\n"); + end + ReadData1E = 64'h3FECB225AB3C633C; + ReadData2E = 64'h00284F83B6EC1ACC; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"100099\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h387D4127A97621FD; + ans = 64'h3CCFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"101100\n"); + end + ReadData1E = 64'h801000007FFFFFFE; + ReadData2E = 64'hB800003FFFF00000; + ReadData3E = 64'hC3F0000240000000; + ans = 64'hC3F0000240000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"102101\n"); + end + ReadData1E = 64'h351800000000007F; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"103102\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'hBFECE9F148DDA85C; + ReadData3E = 64'hCD7FFDFF7FFFFFFE; + ans = 64'hCD7FFDFF7FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"104103\n"); + end + ReadData1E = 64'h380FFFFEEFFFFFFF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'hFFEFFFF80000000E; + ans = 64'hFFEFFFF80000000E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"105104\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'hB89FFFFFC0000FFE; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"106105\n"); + end + ReadData1E = 64'hC7F000FFFFFFFFEF; + ReadData2E = 64'h7FEFFFFFFFFFDE00; + ReadData3E = 64'h4E1FFFFFFFFFFE7F; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"107106\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"108107\n"); + end + ReadData1E = 64'hC05473534AA0CC74; + ReadData2E = 64'hBFDF7FFFFFFFFFEF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h40442185FD764937; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"109108\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h3030002FFFFFFFFF; + ans = 64'h3030002FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"110109\n"); + end + ReadData1E = 64'h0007851499E44B19; + ReadData2E = 64'hC1E5278FCB9A7440; + ReadData3E = 64'hBECECBC20BF8343E; + ans = 64'hBECECBC20BF8343E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"111110\n"); + end + ReadData1E = 64'hC1D9E681DAB5EE33; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"112111\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'hBCBFFFFFE00000FF; + ReadData3E = 64'h3FF0000000007FBF; + ans = 64'h3FF0000000007FBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"113112\n"); + end + ReadData1E = 64'h434FFDFFFFFFC000; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hCE4FF80004000000; + ans = 64'hCE4FF80004000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"114113\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'hC99000000000017E; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"115114\n"); + end + ReadData1E = 64'hC3D03FFFFFFFBFFF; + ReadData2E = 64'hBD9001FFFFFF7FFF; + ReadData3E = 64'hBFE00FFFFFFFFFDE; + ans = 64'h41704207F7F73DF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"116115\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"117116\n"); + end + ReadData1E = 64'h4320000000000800; + ReadData2E = 64'hBFF266E6B5AD2AB6; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"118117\n"); + end + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFEFFFFFF; + ans = 64'h800FFFFFFF000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"119118\n"); + end + ReadData1E = 64'hC5368F35B935254B; + ReadData2E = 64'hBFBFFC8000000000; + ReadData3E = 64'h3E880000003FFFFF; + ans = 64'h45068CBE0F54E37B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"120119\n"); + end + ReadData1E = 64'h030FBFFBFFFFFFFE; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"121120\n"); end ReadData1E = 64'h0000000000000001; ReadData2E = 64'h3F4001FFFFFFFFDF; @@ -15658,90 +4815,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"122399\n"); + $fwrite(fp,"122121\n"); end - ReadData1E = 64'hC02047FFFFFFFFFF; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"122705\n"); - end - ReadData1E = 64'h239000003FDFFFFF; - ReadData2E = 64'hC69003FFFFFBFFFF; - ReadData3E = 64'hC80FDFFFFFF80000; - ans = 64'hC80FDFFFFFF80000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"123011\n"); - end - ReadData1E = 64'h0000000000000001; + ReadData1E = 64'h8000000000008007; ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'h401FF00000000000; - ans = 64'h401FF00000000000; + ReadData3E = 64'h3FE6072EF95CC98F; + ans = 64'h3FE6072EF95CC98F; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -15775,51 +4854,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"123317\n"); - end - ReadData1E = 64'h5A3FFFFFFF7FFF80; - ReadData2E = 64'h41D000007BFFFFFF; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'h5C2000007BBFFFBD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"123623\n"); + $fwrite(fp,"123122\n"); end ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; + ReadData2E = 64'h7FB0000000FFFFF7; + ReadData3E = 64'h8010000000000001; + ans = 64'h3C90000000FFFFF7; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -15853,12 +4893,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"123929\n"); + $fwrite(fp,"124123\n"); end - ReadData1E = 64'hA3BFFFFFFEC00000; - ReadData2E = 64'hFFFFFFFFFFFFFFAE; - ReadData3E = 64'hC010000004080000; - ans = 64'hFFFFFFFFFFFFFFAE; + ReadData1E = 64'h4030000000FFFFEF; + ReadData2E = 64'h4B90000002100000; + ReadData3E = 64'h671FFF9FFFFFFFFF; + ans = 64'h671FFF9FFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -15892,285 +4932,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"124235\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h43E000003FFFFFFC; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"124541\n"); - end - ReadData1E = 64'hBFE2ABEEC977610C; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'hA42FFF8FFFFFFFFE; - ans = 64'h3FF2ABEEC977610D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"124847\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3FB00FFF00000000; - ReadData3E = 64'hC1C0000000000000; - ans = 64'hC1C0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"125153\n"); - end - ReadData1E = 64'h3F599261FF10D874; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"125459\n"); - end - ReadData1E = 64'h4010000002000002; - ReadData2E = 64'hB7EAC9B31C37E360; - ReadData3E = 64'h401FFFFC07FFFFFE; - ans = 64'h401FFFFC07FFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"125765\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'hB18A7754689D82F3; - ans = 64'hB18A7754689D82F3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"126071\n"); - end - ReadData1E = 64'h381FFFFDFFFBFFFF; - ReadData2E = 64'hC02F9C2590DFA192; - ReadData3E = 64'h0010000000000000; - ans = 64'hB85F9C23971954FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"126377\n"); + $fwrite(fp,"125124\n"); end ReadData1E = 64'h0000000000000001; ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h001FFFFFFFFFFFFA; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -16204,12 +4971,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"126683\n"); + $fwrite(fp,"126125\n"); end - ReadData1E = 64'hC050001000000FFF; - ReadData2E = 64'h30CFFFFF807FFFFF; - ReadData3E = 64'h41F431202C87A685; - ans = 64'h41F431202C87A685; + ReadData1E = 64'hC805F3C5C0E9247D; + ReadData2E = 64'hC07FFC0000000002; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4895F1074831075A; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -16243,129 +5010,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"126989\n"); + $fwrite(fp,"127126\n"); end ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC061000080000000; - ReadData3E = 64'h3FE0000000000001; - ans = 64'h3FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"127295\n"); - end - ReadData1E = 64'h401FFFFFFDFBFFFE; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'hC0200000200003FF; - ans = 64'hC044000006FE00FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"127601\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h40C0000008000000; - ReadData3E = 64'h800004001FFFFFFE; - ans = 64'h800004001FFFDFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"127907\n"); - end - ReadData1E = 64'h306000000003FBFF; ReadData2E = 64'hC010000000000001; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h47F6FFFFFFFFFFFF; + ans = 64'h47F6FFFFFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -16399,12 +5049,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"128213\n"); + $fwrite(fp,"128127\n"); end - ReadData1E = 64'h410FFEFFFFF7FFFF; - ReadData2E = 64'hB0BA68A8F1E0C6BE; - ReadData3E = 64'h0021FFFFFFFFBFFF; - ans = 64'hB1DA67D5AC929D8D; + ReadData1E = 64'hB800000040000020; + ReadData2E = 64'h7FD03FFFFFFEFFFF; + ReadData3E = 64'hC0100011FFFFFFFF; + ans = 64'hF7E0400040FF001F; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -16438,207 +5088,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"128519\n"); + $fwrite(fp,"129128\n"); end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'h4BB00020001FFFFF; - ans = 64'h4BB00020001FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"128825\n"); - end - ReadData1E = 64'h3FC100000FFFFFFF; - ReadData2E = 64'h400FFFFFEFFFEFFF; - ReadData3E = 64'h8000000000000001; - ans = 64'h3FE10000077FF776; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"129131\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"129437\n"); - end - ReadData1E = 64'hC80000000037FFFF; - ReadData2E = 64'hBF400003FFFFFFC0; - ReadData3E = 64'h3FC00001001FFFFF; - ans = 64'h475000040037FFCD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"129743\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3FCEBFFFFFFFFFFF; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hBFDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"130049\n"); - end - ReadData1E = 64'h3F5FFFEFFFFF7FFF; + ReadData1E = 64'hBFDFFDFFFFFFFFFF; ReadData2E = 64'hC340000000000000; - ReadData3E = 64'hBCA0000000000020; - ans = 64'hC2AFFFEFFFFF7FFF; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h432FFE0000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -16672,12 +5127,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"130355\n"); + $fwrite(fp,"130129\n"); end ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBFEE6A55223FE187; - ReadData3E = 64'h40BF2A4F0D6A99C1; - ans = 64'h40BF2A4F0D6A99C1; + ReadData2E = 64'h3A70001000080000; + ReadData3E = 64'h3F330CF23C17D959; + ans = 64'h3F330CF23C17D959; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -16711,168 +5166,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"130661\n"); + $fwrite(fp,"131130\n"); end - ReadData1E = 64'h41DFFFE00FFFFFFF; - ReadData2E = 64'hC340000000000000; - ReadData3E = 64'hC010000000000000; - ans = 64'hC52FFFE00FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"130967\n"); - end - ReadData1E = 64'h409F8000003FFFFF; - ReadData2E = 64'h3B6FEFFFFFFFFFFD; - ReadData3E = 64'hC01001FFEFFFFFFF; - ans = 64'hC01001FFEFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"131273\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'h00290AEBB101790F; - ans = 64'h001215D76202F21C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"131579\n"); - end - ReadData1E = 64'hB9F0000400001FFF; - ReadData2E = 64'h7FFFC7FFFFFFFFFF; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"131885\n"); - end - ReadData1E = 64'h0000000000000001; + ReadData1E = 64'h4190B841D370B70C; ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h802FFFFFFFFF7FFB; + ans = 64'hC4F0B841D370B70B; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -16906,2155 +5205,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"132191\n"); - end - ReadData1E = 64'hBFA1000000000001; - ReadData2E = 64'h7FDFFFFE003FFFFF; - ReadData3E = 64'h7FD1000000007FFF; - ans = 64'h7FCFE00021FCBFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"132497\n"); + $fwrite(fp,"132131\n"); end ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hBF2FFF8020000000; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h3CAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"132803\n"); - end - ReadData1E = 64'h3CFF8001FFFFFFFE; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'h9B5000000020003E; - ans = 64'hC05F8001FFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"133109\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h3FC5695F385872B9; - ReadData3E = 64'hBFEFFFFFFFFFFFE7; - ans = 64'hBFEFFFFFFFFFFFE7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"133415\n"); - end - ReadData1E = 64'hC1CFFFFFDFFFFFE0; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'h4000000000000001; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"133721\n"); - end - ReadData1E = 64'h380C785BDC80505F; - ReadData2E = 64'h401004000000007E; - ReadData3E = 64'hBFC8A5BBE8CA87F4; - ans = 64'hBFC8A5BBE8CA87F4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"134027\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'hBFEEB93FEB6D9A27; - ans = 64'hBFEEB93FEB6D9A2B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"134333\n"); - end - ReadData1E = 64'hBE7000023FFFFFFF; - ReadData2E = 64'hC69FBF7FFFFFFFFF; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"134639\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'hC010000000000000; - ans = 64'hC010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"134945\n"); - end - ReadData1E = 64'h413000003FE00000; - ReadData2E = 64'h4047D41D01C7BC9B; - ReadData3E = 64'hC7EFEFFFFFFFDFFF; - ans = 64'hC7EFEFFFFFFFDFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"135251\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h8010BFFFFFFFFFFF; - ReadData3E = 64'hBCA0000000000000; - ans = 64'hBCA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"135557\n"); - end - ReadData1E = 64'hC1861137DB5A3CE3; - ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'hC7F04B353236C72C; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"135863\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h402FFFFFFF000040; - ReadData3E = 64'h47EAAF592AC502DE; - ans = 64'h47EAAF592AC502DE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"136169\n"); - end - ReadData1E = 64'h434FFFC07FFFFFFE; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"136475\n"); - end - ReadData1E = 64'hB9F94E1DAE778706; - ReadData2E = 64'hB270000000000006; - ReadData3E = 64'h381FC0000000FFFE; - ans = 64'h381FC0000000FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"136781\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'h3F1A7E5B60253554; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"137087\n"); - end - ReadData1E = 64'h404B476C9FC42AB2; - ReadData2E = 64'h35CF000003FFFFFE; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"137393\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'h4000000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"137699\n"); - end - ReadData1E = 64'h40303FFFFFFFFEFF; - ReadData2E = 64'h389000003FFF0000; - ReadData3E = 64'hBFE000003FFEFFFE; - ans = 64'hBFE000003FFEFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"138005\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h400FFFFFFFFF3FFF; - ReadData3E = 64'h0010000000000001; - ans = 64'h0010000000000005; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"138311\n"); - end - ReadData1E = 64'h297FC000FFFFFFFE; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'hBD6BDC398D105938; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"138617\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'h7FDFFBFFFFFFFEFF; - ReadData3E = 64'h381E1EE6EF921ABD; - ans = 64'h3CBFFBFFFFFFFEFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"138923\n"); - end - ReadData1E = 64'h735FFFF8007FFFFF; - ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"139229\n"); - end - ReadData1E = 64'hC030000000000FE0; - ReadData2E = 64'h0DDFFFFB00000000; - ReadData3E = 64'h3CA0000000002400; - ans = 64'h3CA0000000002400; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"139535\n"); - end - ReadData1E = 64'h0000000000000001; - ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'h43FDC6998218B001; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"139841\n"); - end - ReadData1E = 64'h476FF80000020000; - ReadData2E = 64'hC03000001FFBFFFE; - ReadData3E = 64'h4340000000000001; - ans = 64'hC7AFF8003FEA01FC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"140147\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'hBFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"140453\n"); - end - ReadData1E = 64'hC01FFFF000000001; - ReadData2E = 64'hC0116F956B466478; - ReadData3E = 64'hC00FFFFFFF7FFFFC; - ans = 64'h403EDF1967075DAB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"140759\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC3EFFFFFFE03FFFE; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'h840FFFFFFE03FFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"141065\n"); - end - ReadData1E = 64'hC005937FE4462628; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'hC24FF9FFFFFFFFFE; - ans = 64'hC24FF9FFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"141371\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC1EFFFBFFFFFFFFB; - ReadData3E = 64'hC3566C56029D4B3B; - ans = 64'hC3566C56029D4B3B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"141677\n"); - end - ReadData1E = 64'h43CFF807FFFFFFFF; - ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'hBFE0000000000000; - ans = 64'hBFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"141983\n"); - end - ReadData1E = 64'h381FFF83FFFFFFFF; - ReadData2E = 64'hA0AC00000007FFFF; - ReadData3E = 64'hB80F77FFFFFFFFFE; - ans = 64'hB80F77FFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"142289\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'h4072000000000002; - ans = 64'h4072000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"142595\n"); - end - ReadData1E = 64'hBCAFFFEFFFFFE000; - ReadData2E = 64'h3FFFFFFEFFFFFF80; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"142901\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'h3FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"143207\n"); - end - ReadData1E = 64'h00100000403FFFFF; - ReadData2E = 64'hC3D800000FFFFFFF; - ReadData3E = 64'hFFF77AAF6197A823; - ans = 64'hFFFF7AAF6197A823; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"143513\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h43D100000007FFFF; - ReadData3E = 64'hFFFFFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"143819\n"); - end - ReadData1E = 64'hC030000FFDFFFFFF; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'h3FEFC0000000003F; - ans = 64'h3FEFC0000000003F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"144125\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h1F2DEFFFFFFFFFFF; - ReadData3E = 64'hC34D4DD27012E241; - ans = 64'hC34D4DD27012E241; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"144431\n"); - end - ReadData1E = 64'hB95FFFFFFF7FDFFE; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h3FD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"144737\n"); - end - ReadData1E = 64'h73B2AA12DD4A0E23; - ReadData2E = 64'hFFFFFFFFFFF6FFFF; - ReadData3E = 64'h480000000400007F; - ans = 64'hFFFFFFFFFFF6FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"145043\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'hFFE020000000FFFF; - ans = 64'hFFE020000000FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"145349\n"); - end - ReadData1E = 64'hC1F001000007FFFF; - ReadData2E = 64'h47F47FFFFFFFFFFF; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'hC9F48148000A3FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"145655\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'hBFE0000000000000; - ans = 64'hBFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"145961\n"); - end - ReadData1E = 64'hC00007FFFFBFFFFF; - ReadData2E = 64'h40000000100001FE; - ReadData3E = 64'hC80FFFFFFFC00001; - ans = 64'hC80FFFFFFFC00001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"146267\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h4010000008400000; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"146573\n"); - end - ReadData1E = 64'h3800000800001000; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'h3FFC0000003FFFFF; - ans = 64'h3FFC0000003FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"146879\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h613FFF7FFF7FFFFF; - ReadData3E = 64'hBE28B1A0E27593C1; - ans = 64'hBE28B1A0E27593C1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"147185\n"); - end - ReadData1E = 64'h4800000000004001; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'h44B0000000004002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"147491\n"); - end - ReadData1E = 64'h43EBF7FFFFFFFFFE; - ReadData2E = 64'h0010000007FFFFC0; - ReadData3E = 64'hC1D0007DFFFFFFFF; - ans = 64'hC1D0007DFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"147797\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'hBFA8C76ADFD94B46; - ans = 64'hBFA8C76ADFD94B46; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"148103\n"); - end - ReadData1E = 64'hB7F0000040000003; - ReadData2E = 64'h43CFCFFFFFFFFFFF; - ReadData3E = 64'hC000000000000000; - ans = 64'hC000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"148409\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h3FD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"148715\n"); - end - ReadData1E = 64'h3EAB991333A4F989; - ReadData2E = 64'h7FF000001BFFFFFF; - ReadData3E = 64'hBF800001FFFFFFFE; - ans = 64'h7FF800001BFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"149021\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC8045EC85D798E1F; + ReadData2E = 64'h77FFFFFFFFFFFFFE; ReadData3E = 64'hFFE0000000000001; ans = 64'hFFE0000000000001; FrmE = 3'b000; @@ -19090,12 +5244,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"149327\n"); + $fwrite(fp,"133132\n"); end - ReadData1E = 64'h9E40000800000007; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'h3FF000080000001F; - ans = 64'h3FF000080000001F; + ReadData1E = 64'h2E2FFFFBFFFFFDFF; + ReadData2E = 64'h4070200010000000; + ReadData3E = 64'h403FFF000FFFFFFF; + ans = 64'h403FFF000FFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -19129,12 +5283,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"149633\n"); + $fwrite(fp,"134133\n"); end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC05F80001FFFFFFF; - ReadData3E = 64'hC7E0020000000040; - ans = 64'hC7E0020000000040; + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -19168,2001 +5322,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"149939\n"); + $fwrite(fp,"135134\n"); end - ReadData1E = 64'hD5E03FFFFFFFFFEF; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'hD5C03FFFFFFFFFF0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"150245\n"); - end - ReadData1E = 64'hC3C000000003FFF6; - ReadData2E = 64'hC01FE01FFFFFFFFF; - ReadData3E = 64'h3FDFFFFFFEF7FFFF; - ans = 64'h43EFE0200007F7F3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"150551\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'hBFC4ED8EFAC28779; - ans = 64'hBFC4ED8EFAC28779; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"150857\n"); - end - ReadData1E = 64'h48000010FFFFFFFE; - ReadData2E = 64'h4070020000003FFF; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h4880021102203FFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"151163\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'hBCAFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"151469\n"); - end - ReadData1E = 64'h3EAFFFF800000010; - ReadData2E = 64'hC06466011810A25A; - ReadData3E = 64'h3FC00000000007FE; - ans = 64'h3FBFF5CD0200C7CE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"151775\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h41C000801FFFFFFF; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'h434FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"152081\n"); - end - ReadData1E = 64'hBFF0000000000010; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'h3F9FFF7FFFFFFFFA; - ans = 64'hBFDE00080000001E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"152387\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h3FF00000001000FE; - ReadData3E = 64'h7FFFFF0000400000; - ans = 64'h7FFFFF0000400000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"152693\n"); - end - ReadData1E = 64'h3C4000000007FFFE; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'h8010000000000000; - ans = 64'h3C3000000007FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"152999\n"); - end - ReadData1E = 64'h002FFF8000003FFE; - ReadData2E = 64'hC3F00000017FFFFF; - ReadData3E = 64'h41FFFFFFFFDFF800; - ans = 64'h41FFFFFFFFDFF800; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"153305\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'hC1E57FCF69CF5180; - ans = 64'hC1E57FCF69CF5180; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"153611\n"); - end - ReadData1E = 64'hBDF00001FFFFFFFF; - ReadData2E = 64'h508FFFFBEFFFFFFE; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hCE8FFFFFEFFF7DFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"153917\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'h0027FFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"154223\n"); - end - ReadData1E = 64'h480000000103FFFE; - ReadData2E = 64'hFFFFEFFFC0000000; - ReadData3E = 64'hC1EFFFFFF8000100; - ans = 64'hFFFFEFFFC0000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"154529\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC1D0000000007FF7; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'hC01FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"154835\n"); - end - ReadData1E = 64'h408001FFFFFFE000; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'hC01DFBFFFFFFFFFF; - ans = 64'h407F8C0FFFFFBFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"155141\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hBFBFFF7FFFFFE000; - ReadData3E = 64'hBE600000200000FE; - ans = 64'hBE600000200000FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"155447\n"); - end - ReadData1E = 64'h40093E4AEFD3FCC6; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'h0000000000000001; - ans = 64'h40093E4AEFD3FCC6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"155753\n"); - end - ReadData1E = 64'hC3D1FE0000000000; - ReadData2E = 64'hC3D07FFFFDFFFFFF; - ReadData3E = 64'hFFDFFFFFFF00000F; - ans = 64'hFFDFFFFFFF00000F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"156059\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'hC1FFFFFFFFDDFFFF; - ans = 64'hC1FFFFFFFFDDFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"156365\n"); - end - ReadData1E = 64'hC3FFFFEFFFFC0000; - ReadData2E = 64'hA307FFFFFFBFFFFE; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'h3FDFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"156671\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'h8010000000000000; - ans = 64'h8000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"156977\n"); - end - ReadData1E = 64'h4803C1CD4177B2BE; - ReadData2E = 64'hC80FFFFFFC200000; - ReadData3E = 64'hC7F0001FFFFFEFFE; - ans = 64'hD023C1CD3F133AE3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"157283\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h7FDFC00000FFFFFF; - ReadData3E = 64'h4010000000000000; - ans = 64'h4017F000003FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"157589\n"); - end - ReadData1E = 64'hC04FFFFFCFFFFFFF; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'h4024BEC7A4366D96; - ans = 64'hC05D6826DB79324B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"157895\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hB1100000200000FF; - ReadData3E = 64'h8024D4E33D003A28; - ans = 64'h8024D4E33D003A28; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"158201\n"); - end - ReadData1E = 64'h41BFFFFFDFFFDFFF; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"158507\n"); - end - ReadData1E = 64'h3FBF20EB2E06830F; - ReadData2E = 64'h47C7BB68F15E5DDB; - ReadData3E = 64'h46EFFFDFFFFFEFFE; - ans = 64'h479719F77931B106; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"158813\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'h615A2EE20A8610C4; - ans = 64'h615A2EE20A8610C4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"159119\n"); - end - ReadData1E = 64'h3C7680720C59CAC2; - ReadData2E = 64'hBF80027FFFFFFFFE; - ReadData3E = 64'hBFD0000000000000; - ans = 64'hBFD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"159425\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'h0000000000000001; - ans = 64'h0020000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"159731\n"); - end - ReadData1E = 64'h979FF7FFFF000000; - ReadData2E = 64'hC00800007FFFFFFF; - ReadData3E = 64'hBF8FFFFFF8000006; - ans = 64'hBF8FFFFFF8000006; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"160037\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h3F6FFFFFFFFFFFFF; - ReadData3E = 64'hC000000000000001; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"160343\n"); - end - ReadData1E = 64'h36AD8E7E53A268EF; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'hBFDD8B65DCF02CB0; - ans = 64'hBFDD8B65DCF02CB0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"160649\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h883C75A4B28F7EB9; - ReadData3E = 64'hC7E020000FFFFFFF; - ans = 64'hC7E020000FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"160955\n"); - end - ReadData1E = 64'h43B003FFFFFEFFFF; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"161261\n"); - end - ReadData1E = 64'h3FDFFE0000001FFF; - ReadData2E = 64'hC7EF000000000020; - ReadData3E = 64'h41DFFFFFFFFFBEFF; - ans = 64'hC7DEFE1000001F1F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"161567\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'h3F800008000007FE; - ans = 64'h3F800008000007FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"161873\n"); - end - ReadData1E = 64'h4480001FFFFFFFEE; - ReadData2E = 64'h1A2FFFFFC00003FF; - ReadData3E = 64'h3CA0000000000001; - ans = 64'h3CA0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"162179\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h4010000000000000; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"162485\n"); - end - ReadData1E = 64'h7FFFBFFFFFFF7FFE; - ReadData2E = 64'h42508003FFFFFFFE; - ReadData3E = 64'h4010000000008FFE; - ans = 64'h7FFFBFFFFFFF7FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"162791\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hBFF0001FFFFFDFFF; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h3FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"163097\n"); - end - ReadData1E = 64'h4000185761105E4D; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'h802FFFFFFF8007FF; - ans = 64'h4020185761105E4E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"163403\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h37FFFFFFFFFFF000; - ReadData3E = 64'h3F300000004FFFFF; - ans = 64'h3F300000004FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"163709\n"); - end - ReadData1E = 64'hC80007FFFDFFFFFF; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'h7FE0000000000000; - ans = 64'h7FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"164015\n"); - end - ReadData1E = 64'h43EFBFFFFFFFFFEE; - ReadData2E = 64'hBF4C00001FFFFFFF; - ReadData3E = 64'hBFDFFFFFE0200000; - ans = 64'hC34BC8001FBFFFF0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"164321\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'hC03C2DBB3FCD85BC; - ans = 64'hC03C2DBB3FCD85BC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"164627\n"); - end - ReadData1E = 64'hDED0000000009000; - ReadData2E = 64'hCFF000000080001E; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'h6ED000000080901E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"164933\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"165239\n"); - end - ReadData1E = 64'hC01F00000001FFFF; - ReadData2E = 64'hD5F00040000007FF; - ReadData3E = 64'h001BCC611BF190C0; - ans = 64'h561F007C00020F85; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"165545\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hFFEFDFFFFFFFFDFF; + ReadData1E = 64'h3E2FFFF7FFFFFFFE; + ReadData2E = 64'hC03495889C8B1248; ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hC013EFFFFFFFFEFE; + ans = 64'hBFF0000014958376; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -21196,791 +5361,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"165851\n"); + $fwrite(fp,"136135\n"); end - ReadData1E = 64'hFFF8000000000002; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'hC01FFFFF7FFFFBFE; - ans = 64'hFFF8000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"166157\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hDAC5722C9F775777; - ReadData3E = 64'hBCAF4D0647B4FC25; - ans = 64'hBCAF4D0647B4FC25; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"166463\n"); - end - ReadData1E = 64'h5FC1FFFFFFFFFFF7; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'hC340000000000001; - ans = 64'h6311FFFFFFFFFFF8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"166769\n"); - end - ReadData1E = 64'hC8C0000000004001; - ReadData2E = 64'hC801E00000000000; - ReadData3E = 64'hBFFFFFE200000000; - ans = 64'h50D1E00000004781; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"167075\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'h43D1FFFFFFFFFEFF; - ans = 64'h43D1FFFFFFFFFEFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"167381\n"); - end - ReadData1E = 64'h3FF73F5B85DE8CFD; - ReadData2E = 64'hCC5FF00002000000; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'hCC6733BBD98F936F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"167687\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'h7FE0000000000000; - ans = 64'h7FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"167993\n"); - end - ReadData1E = 64'h28D8C4D1B6B5D02A; - ReadData2E = 64'hC03000FBFFFFFFFF; - ReadData3E = 64'hC3E92D9F7CD3120F; - ans = 64'hC3E92D9F7CD3120F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"168299\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hBCAEFFFFFFFFFFFD; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h3FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"168605\n"); - end - ReadData1E = 64'h3ABFFFFFC000001F; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'hC00C30DFF54218F0; - ans = 64'h7AAFFFFFC000001F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"168911\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC261FFFDFFFFFFFF; - ReadData3E = 64'h41FFFF00000001FF; - ans = 64'h41FFFF00000001FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"169217\n"); - end - ReadData1E = 64'hA0237DD94E68EFEB; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'hE0137DD94E68EFEC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"169523\n"); - end - ReadData1E = 64'hC19C000000000001; - ReadData2E = 64'h3FB03FFFFBFFFFFF; - ReadData3E = 64'hB7EFFEFFFEFFFFFF; - ans = 64'hC15C6FFFF8FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"169829\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'h43CFFFFFEBFFFFFF; - ans = 64'h43CFFFFFEBFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"170135\n"); - end - ReadData1E = 64'hD7DC200000000000; - ReadData2E = 64'hC80FF800007FFFFF; - ReadData3E = 64'h8000000000000000; - ans = 64'h5FFC18F800707FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"170441\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'hC340000000000001; - ans = 64'hC33FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"170747\n"); - end - ReadData1E = 64'hB01A4F832C959609; - ReadData2E = 64'h89C82BFFE0C45E6D; - ReadData3E = 64'h8027D4762D411524; - ans = 64'h8027D4762D411524; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"171053\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC01FFFFFFFFFFF7F; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hBFD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"171359\n"); - end - ReadData1E = 64'h3FBFFFFFFFFFFFFA; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'h3801FFFFEFFFFFFF; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"171665\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h5380000040000200; - ReadData3E = 64'h402FFFFFFDFFFDFE; - ans = 64'h402FFFFFFDFFFDFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"171971\n"); - end - ReadData1E = 64'hFFEB274EF24ABE39; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'hC00FFFFFFFFFFFFE; + ReadData1E = 64'h0000000000000001; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h401FFFFFFFEFF7FF; ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 @@ -22015,12 +5400,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"172277\n"); + $fwrite(fp,"137136\n"); end - ReadData1E = 64'h0A1FFFFFFFFF8200; - ReadData2E = 64'h400B6A2470F9D3B1; - ReadData3E = 64'h3F900000000010FE; - ans = 64'h3F900000000010FE; + ReadData1E = 64'hBFF0080000100000; + ReadData2E = 64'hBACFBB9EBC50971A; + ReadData3E = 64'hC810F4CE4BC7C4C5; + ans = 64'hC810F4CE4BC7C4C5; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -22054,12 +5439,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"172583\n"); + $fwrite(fp,"138137\n"); + end + ReadData1E = 64'hFFFBFFE000000000; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"139138\n"); end ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'h5110000000000000; - ans = 64'h7FF8000000000001; + ReadData2E = 64'h3FFFFFBFFFFFFDFF; + ReadData3E = 64'h4010A4B40EF92C0D; + ans = 64'h4010A4B40EF92C0D; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -22093,12 +5517,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"172889\n"); + $fwrite(fp,"140139\n"); end - ReadData1E = 64'hC1FBFFFE00000000; - ReadData2E = 64'h43FFFBFEFFFFFFFF; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; + ReadData1E = 64'h3CFD23DB64A2F8E7; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h7A94000000000400; + ans = 64'h7A94000000000400; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -22132,12 +5556,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"173195\n"); + $fwrite(fp,"141140\n"); end ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'hC0755B2DE73762BF; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -22171,12 +5595,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"173501\n"); + $fwrite(fp,"142141\n"); end - ReadData1E = 64'h4020001F80000000; - ReadData2E = 64'hC060001080000000; - ReadData3E = 64'h3F1FFFFFFE001FFF; - ans = 64'hC090002FE0207C02; + ReadData1E = 64'hBFF00000003FFFFC; + ReadData2E = 64'hC1FBFFFC00000000; + ReadData3E = 64'h3FFEE127BDE09C2F; + ans = 64'h41FBFFFC008EE111; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -22210,283 +5634,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"173807\n"); + $fwrite(fp,"143142\n"); end ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h070B0825C5EC0F5A; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'h3CAFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"174113\n"); - end - ReadData1E = 64'hBFCFFFC000002000; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'h3FEFFFFFF8003FFF; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"174419\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hFFDA5511E91B29A4; - ReadData3E = 64'hC0132AF4F7353936; - ans = 64'hC019C039717C039F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"174725\n"); - end - ReadData1E = 64'hB80C27A52E429300; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'h4000000000000000; - ans = 64'h4000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"175031\n"); - end - ReadData1E = 64'hB7E0400000000007; - ReadData2E = 64'h40168EE42D8C363C; - ReadData3E = 64'hC3EACA3042143FC7; - ans = 64'hC3EACA3042143FC7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"175337\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'hC80FFFFBFFFEFFFE; - ans = 64'hC80FFFFBFFFEFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"175643\n"); - end - ReadData1E = 64'h3FFFFFFFE000007F; - ReadData2E = 64'hFFD833ECC0B49AAE; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FCF304D5DFD46C7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"175949\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h8000000000000001; + ReadData2E = 64'h0010000000000001; ReadData3E = 64'hC00FFFFFFFFFFFFE; ans = 64'hC00FFFFFFFFFFFFE; FrmE = 3'b000; @@ -22522,12 +5673,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"176255\n"); + $fwrite(fp,"144143\n"); end - ReadData1E = 64'h511FFFFFFFFF81FF; - ReadData2E = 64'h2C9D720D8566E997; - ReadData3E = 64'hD87A8F4E8B691515; - ans = 64'hD87A8F4E8B691515; + ReadData1E = 64'h434A8ED07DE57477; + ReadData2E = 64'h430FFFFFFFF00FFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h466A8ED07DD83A55; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -22561,12 +5712,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"176561\n"); + $fwrite(fp,"145144\n"); end ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h7FE00000001FFFFF; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'h40000000001FFFFE; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h3BAFFFFDE0000000; + ans = 64'h3BAFFFFDE0000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -22600,12 +5751,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"176867\n"); + $fwrite(fp,"146145\n"); end - ReadData1E = 64'h3FEEFFFFFFF7FFFF; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'hC80FC00000FFFFFE; - ans = 64'hC80FC00000FFFFFE; + ReadData1E = 64'h4021000FFFFFFFFF; + ReadData2E = 64'h3CA86982623052B0; + ReadData3E = 64'hC8AFFFF0001FFFFF; + ans = 64'hC8AFFFF0001FFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -22639,12 +5790,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"177173\n"); + $fwrite(fp,"147146\n"); + end + ReadData1E = 64'hB1CFE00000000000; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"148147\n"); end ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h052FFFFFFFFEBFFE; - ReadData3E = 64'h52325DDDFABB70E9; - ans = 64'h52325DDDFABB70E9; + ReadData2E = 64'hC1B000000003FFBF; + ReadData3E = 64'h154000000002FFFE; + ans = 64'h154000000002FFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -22678,12 +5868,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"177479\n"); + $fwrite(fp,"149148\n"); end - ReadData1E = 64'h41ED48B95654A033; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'hBFF0000000000001; - ans = 64'hBFF0000000000001; + ReadData1E = 64'hC3E00FFFFFFFEFFF; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h0007FFFFFFFFFE00; + ans = 64'hC3C00FFFFFFFF000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -22717,11 +5907,947 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"177785\n"); + $fwrite(fp,"150149\n"); end - ReadData1E = 64'hFFD7D8EF2EB80057; - ReadData2E = 64'h47EC60B0CB2E134A; - ReadData3E = 64'h40FFFFFC00000002; + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hC12FFFFFFFFFEFF8; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"151150\n"); + end + ReadData1E = 64'h2FAFFFFFFFFFE7FF; + ReadData2E = 64'hC1FA9F280AF56348; + ReadData3E = 64'h41D000020001FFFF; + ans = 64'h41D000020001FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"152151\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"153152\n"); + end + ReadData1E = 64'hBE4040003FFFFFFF; + ReadData2E = 64'hCD8FFFFFFFFFFEFB; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"154153\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h4EC0100C9E284222; + ans = 64'h4EC0100C9E284222; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"155154\n"); + end + ReadData1E = 64'hC1FFFFFFFFFFFFC0; + ReadData2E = 64'hB5C20000003FFFFF; + ReadData3E = 64'hBFDFFFFFE00001FF; + ans = 64'hBFDFFFFFE00001FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"156155\n"); + end + ReadData1E = 64'h41E6AE30541CC98B; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h41F6AE30542CC98A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"157156\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'h40000000FEFFFFFF; + ReadData3E = 64'h3FB6228AB6577502; + ans = 64'h3FB6228AB6577502; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"158157\n"); + end + ReadData1E = 64'h3FC605FF9B8F99A0; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h480CACE254985004; + ans = 64'h480CACE254985004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"159158\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hBFD285597703A02D; + ReadData3E = 64'h0000000000000001; + ans = 64'h8004A1565DC0E80A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"160159\n"); + end + ReadData1E = 64'hC1320000000007FF; + ReadData2E = 64'h41EC000001FFFFFF; + ReadData3E = 64'h37F000000007FDFE; + ans = 64'hC32F800002400DFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"161160\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h0027FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"162161\n"); + end + ReadData1E = 64'h3F201FFFFFFFFFEE; + ReadData2E = 64'h41D000001EFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h41001FE01F3DFFEC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"163162\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h403864AFC6B0AA85; + ans = 64'h403864AFC6B0AA85; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"164163\n"); + end + ReadData1E = 64'hC0303BFFFFFFFFFE; + ReadData2E = 64'h3F300000000077FF; + ReadData3E = 64'h3FE0007FFFFFFFBF; + ans = 64'h3FDFC00FFFFFFD97; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"165164\n"); + end + ReadData1E = 64'h400647A648E203CA; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h435647A648E203CB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"166165\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hFFE69CC7FACB1871; + ReadData3E = 64'hC3452300F6385F7E; + ans = 64'hC3452300F6385F7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"167166\n"); + end + ReadData1E = 64'h120FFFFFF8400000; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h0020B7A4885D6BDA; + ans = 64'h51FFFFFFF8400000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"168167\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hB80FFFFFFFFFFFBE; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"169168\n"); + end + ReadData1E = 64'hC01FFFBFFFFFEFFF; + ReadData2E = 64'h00200002000000FE; + ReadData3E = 64'hC53FFFFFFFFFC0FF; + ans = 64'hC53FFFFFFFFFC0FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"170169\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"171170\n"); + end + ReadData1E = 64'h40350D3B958A0A9B; + ReadData2E = 64'h32F1FEFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"172171\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h4093BFFFFFFFFFFF; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"173172\n"); + end + ReadData1E = 64'h80DFFFFFFFFDFFEE; + ReadData2E = 64'hC7FDFFBFFFFFFFFF; + ReadData3E = 64'hBC0FFBDFFFFFFFFF; + ans = 64'hBC0FFBDFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"174173\n"); + end + ReadData1E = 64'hBFD0000004003FFE; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'hFFF0000000000000; ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 @@ -22756,12 +6882,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"178091\n"); + $fwrite(fp,"175174\n"); end ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'h001FFFFFC0000FFE; - ans = 64'h001FFFFFC0000FFE; + ReadData2E = 64'hFFD1D4508667216A; + ReadData3E = 64'h41E400007FFFFFFE; + ans = 64'h41E400007FDC575D; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -22795,12 +6921,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"178397\n"); + $fwrite(fp,"176175\n"); end - ReadData1E = 64'hBEF0003FDFFFFFFF; - ReadData2E = 64'h4020000000002002; - ReadData3E = 64'hC34FFFFFFFFFFFFE; - ans = 64'hC34FFFFFFFFFFFFE; + ReadData1E = 64'h3EFFBFFFFF000000; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'hC3F00000000001FC; + ans = 64'hC3F00000000001FC; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -22834,363 +6960,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"178703\n"); + $fwrite(fp,"177176\n"); end ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'h4000000000000000; - ans = 64'h4000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"179009\n"); - end - ReadData1E = 64'h43DF719CD7AE4856; - ReadData2E = 64'h3FDFFFFFFFFEFFFD; - ReadData3E = 64'h4B400083FFFFFFFF; - ans = 64'h4B400083FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"179315\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC1CFFF000003FFFE; - ReadData3E = 64'h0010000000000000; - ans = 64'h81EFFEFFFF83FFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"179621\n"); - end - ReadData1E = 64'h4006D160DC3E5934; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'h47FFBFFFFBFFFFFF; - ans = 64'h47FFBFFFFBFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"179927\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h396DFC66107BEA99; - ReadData3E = 64'hC7EC00001FFFFFFE; - ans = 64'hC7EC00001FFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"180233\n"); - end - ReadData1E = 64'h547FFFFFCFFFFFFF; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h3FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"180539\n"); - end - ReadData1E = 64'hB8085FDD8B928E73; - ReadData2E = 64'h3A7FFFFF80000020; - ReadData3E = 64'hC7EDF1DED100B9B0; - ans = 64'hC7EDF1DED100B9B0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"180845\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'h43CD9439FEC97506; - ans = 64'h43CD9439FEC97506; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"181151\n"); - end - ReadData1E = 64'h41D0000200000002; - ReadData2E = 64'hBBD1C3DADDAEF6AB; - ReadData3E = 64'h4340000000000000; - ans = 64'h4340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"181457\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hBCA0000000000000; + ReadData2E = 64'hFFE4000000002000; ReadData3E = 64'hBFF0000000000001; - ans = 64'hBFF0000000000001; + ans = 64'hC00C000000001FFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -23224,12 +6999,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"181763\n"); + $fwrite(fp,"178177\n"); end - ReadData1E = 64'hC0A00001FFFBFFFE; - ReadData2E = 64'hC04FFFFFFFF83FFF; - ReadData3E = 64'h7FD000009FFFFFFE; - ans = 64'h7FD000009FFFFFFE; + ReadData1E = 64'h3F100000005FFFFF; + ReadData2E = 64'h401FFFE00000003F; + ReadData3E = 64'h3D1076662C9D167F; + ans = 64'h3F3FFFE000C41D17; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -23263,12 +7038,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"182069\n"); + $fwrite(fp,"179178\n"); end ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h3FEFDFFFEFFFFFFF; - ReadData3E = 64'h8000000000000001; - ans = 64'h000FEFFFF7FFFFFE; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -23302,12 +7077,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"182375\n"); + $fwrite(fp,"180179\n"); end - ReadData1E = 64'h3A3FC00000000FFF; + ReadData1E = 64'hB8000FF7FFFFFFFF; + ReadData2E = 64'h3EADFFFFFFFFFEFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hB6BE1DF0FFFFFEFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"181180\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'h3FBF800000010000; - ans = 64'h3FBF800000010000; + ReadData3E = 64'h3FD0007FDFFFFFFF; + ans = 64'h3FD0007FDFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -23341,85 +7155,7 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"182681\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h7FFFFFFFE3FFFFFF; - ReadData3E = 64'h38100008000FFFFE; - ans = 64'h7FFFFFFFE3FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"182987\n"); - end - ReadData1E = 64'h4090000007FFFFEF; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFE00000000007FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"183293\n"); + $fwrite(fp,"182181\n"); end ReadData1E = 64'h3FEFBFFFFFFFFFFA; ReadData2E = 64'h4BD0200008000000; @@ -23458,90 +7194,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"183599\n"); + $fwrite(fp,"183182\n"); end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'hBFE0020007FFFFFE; - ans = 64'hBFE0020007FFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"183905\n"); - end - ReadData1E = 64'h802002000000007F; - ReadData2E = 64'hC7F41A21FDBC75B7; - ReadData3E = 64'hC010000000000001; - ans = 64'hC010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"184211\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData1E = 64'hC1EE3507921BCF72; ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'h41CE3507941BCF72; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -23575,51 +7233,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"184517\n"); - end - ReadData1E = 64'h403FFF00001FFFFF; - ReadData2E = 64'hBFC0003FFFFFFEFF; - ReadData3E = 64'h3C6FFBFFFDFFFFFE; - ans = 64'hC00FFF7FFC1FFE7D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"184823\n"); + $fwrite(fp,"184183\n"); end ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC06FFFFF0003FFFE; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h4016EDBD60546093; + ReadData3E = 64'h41CFF7FFFFFFF000; + ans = 64'h41CFF7FFFFFFF000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -23653,90 +7272,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"185129\n"); + $fwrite(fp,"185184\n"); end - ReadData1E = 64'h1BD0800000000004; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'h41F040000000003E; - ans = 64'h41F040000000003E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"185435\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h35E1FFFFFFFFBFFF; - ReadData3E = 64'h3FC00000017FFFFF; - ans = 64'h3FC00000017FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"185741\n"); - end - ReadData1E = 64'hBB50000003FFFFBE; + ReadData1E = 64'hBFF0040000020000; ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'h3FD0000000000000; - ans = 64'h3FD0000000000000; + ReadData3E = 64'hBC60000800000800; + ans = 64'h3FE004000001FFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -23770,3715 +7311,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"186047\n"); - end - ReadData1E = 64'hBFE2B7291B588423; - ReadData2E = 64'h07000FDFFFFFFFFF; - ReadData3E = 64'h4340001FFFFFFF80; - ans = 64'h4340001FFFFFFF80; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"186353\n"); + $fwrite(fp,"186185\n"); end ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'h7FE720695AC49CE9; - ans = 64'h7FE720695AC49CE9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"186659\n"); - end - ReadData1E = 64'hC7E00000000000BF; - ReadData2E = 64'hBF899D7D5F337EFB; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'h47799D7D5F33802D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"186965\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFDFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"187271\n"); - end - ReadData1E = 64'hFFDFFFFFFFFBBFFF; - ReadData2E = 64'h7FEF000000000200; - ReadData3E = 64'h400FF8000007FFFF; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"187577\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h47F0FFFFFFFFDFFF; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"187883\n"); - end - ReadData1E = 64'h3BDFFFFFDFFFFFFC; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'h30E000000081FFFE; - ans = 64'hBBCFFFFFDFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"188189\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hD34562EBF3B297C2; - ReadData3E = 64'hC1B0002003FFFFFF; - ans = 64'hC1B0002003FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"188495\n"); - end - ReadData1E = 64'h3D0CC8372DBE587E; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBCFD48372DBE5880; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"188801\n"); - end - ReadData1E = 64'hC3EDFFF000000000; - ReadData2E = 64'hC07F00000000001F; - ReadData3E = 64'hC1F8C8FF1C1636A0; - ans = 64'h447D0FF07FFFE754; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"189107\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'h3FE0000020008000; - ans = 64'h3FE0000020008000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"189413\n"); - end - ReadData1E = 64'hBCDFFFEFFFFEFFFF; - ReadData2E = 64'h309FFFC800000000; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hBFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"189719\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'h3FD0000000000000; - ans = 64'h3FD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"190025\n"); - end - ReadData1E = 64'hC0EEFFFFFF7FFFFF; - ReadData2E = 64'hB7FFFFF9FFFFFFFF; - ReadData3E = 64'hBFFFFFFEEFFFFFFF; - ans = 64'hBFFFFFFEEFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"190331\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC3C000010003FFFF; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"190637\n"); - end - ReadData1E = 64'hD83FFFFEBFFFFFFE; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'h48A000007FFFBFFF; - ans = 64'h583FFFFEBFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"190943\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hA21FFFFFDBFFFFFF; - ReadData3E = 64'h3EC0000100000000; - ans = 64'h3EC0000100000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"191249\n"); - end - ReadData1E = 64'hC00FFFC000003FFF; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'h400FFFC000004001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"191555\n"); - end - ReadData1E = 64'h43F08000003FFFFF; - ReadData2E = 64'h43F0000000010007; - ReadData3E = 64'h3FD000008000003F; - ans = 64'h47F0800000410806; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"191861\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'h402FFFFFFFEFFFE0; - ans = 64'h402FFFFFFFEFFFE0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"192167\n"); - end - ReadData1E = 64'hBFCFFFFFF0001000; - ReadData2E = 64'hBFFFFFFFE1000000; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h3FF7FFFFF4400404; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"192473\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBCA0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"192779\n"); - end - ReadData1E = 64'hB050000000000080; - ReadData2E = 64'hC040000000023FFE; - ReadData3E = 64'hC5F0001FFFFC0000; - ans = 64'hC5F0001FFFFC0000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"193085\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h70CFFFFFF007FFFF; - ReadData3E = 64'h4340000000000001; - ans = 64'h4340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"193391\n"); - end - ReadData1E = 64'h39E0400200000000; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'h93BDEDDC1C831F20; - ans = 64'hB9F04001FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"193697\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC004002000000000; - ReadData3E = 64'h3F40000002007FFF; - ans = 64'h3F40000002007FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"194003\n"); - end - ReadData1E = 64'h401E2A166710BDF4; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'hC02E2A166710BDF4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"194309\n"); - end - ReadData1E = 64'h47F7FFFFFFFFFE00; - ReadData2E = 64'hBCAA2259CDEBD65C; - ReadData3E = 64'h43E0000004000003; - ans = 64'hC4B399435A70BF23; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"194615\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'h93EFFFFFFFF800FE; - ans = 64'h93EFFFFFFFF800FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"194921\n"); - end - ReadData1E = 64'hAC0EEB91BA0B67AB; - ReadData2E = 64'h344007FFFFFF7FFF; - ReadData3E = 64'hBFE0000000000001; - ans = 64'hBFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"195227\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'h801FFFFFFFFFFFFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"195533\n"); - end - ReadData1E = 64'hC021FFFFFFFFDFFF; - ReadData2E = 64'h54B000000000002E; - ReadData3E = 64'h77C7FFFBFFFFFFFE; - ans = 64'h77C7FFFBFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"195839\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC02FFFFFFF7FFBFE; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"196145\n"); - end - ReadData1E = 64'hC6CC000000007FFF; - ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'hC02FFDFFFFFFFDFF; - ans = 64'h46EC000000007FFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"196451\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h36EE3366425C75C8; - ReadData3E = 64'hC01E3475BEDA42B8; - ans = 64'hC01E3475BEDA42B8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"196757\n"); - end - ReadData1E = 64'hBF27000000000000; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'h0000000000000000; - ans = 64'h3F47000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"197063\n"); - end - ReadData1E = 64'h43E0080007FFFFFF; - ReadData2E = 64'hBE6000021FFFFFFF; - ReadData3E = 64'hBE0FFF6FFFFFFFFE; - ans = 64'hC25008022910010E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"197369\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'hBFCFFFFBFFFF7FFE; - ans = 64'hBFCFFFFBFFFF7FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"197675\n"); - end - ReadData1E = 64'h18B000000007EFFF; - ReadData2E = 64'h434FFFBFFEFFFFFE; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'h3FDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"197981\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC010000000000001; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'h8033FFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"198287\n"); - end - ReadData1E = 64'h37E000000FFFFFF6; - ReadData2E = 64'h33D6647C02C60C56; - ReadData3E = 64'hB7E00800007FFFFF; - ans = 64'hB7E00800007FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"198593\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h7FDA473ACD6FEEA1; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h401691CEB35BFBA7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"198899\n"); - end - ReadData1E = 64'h3FDFFFFC00000000; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'hC02FFFFFFFFFFFFF; - ans = 64'hC033FFFF7FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"199205\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h3BBFA0C90CC4D322; - ReadData3E = 64'hC1EFFFFFFFFEF7FF; - ans = 64'hC1EFFFFFFFFEF7FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"199511\n"); - end - ReadData1E = 64'h3F6D51D89575BCC2; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'h7FF0000000000001; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"199817\n"); - end - ReadData1E = 64'hB7ED478C97EEF482; - ReadData2E = 64'hBFFBFF8000000000; - ReadData3E = 64'hED7FFFFF00000010; - ans = 64'hED7FFFFF00000010; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"200123\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC340000000000000; - ReadData3E = 64'hC1C0000001FFFBFF; - ans = 64'hC1C0000001FFFBFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"200429\n"); - end - ReadData1E = 64'h3FE0001FFFFFF7FF; - ReadData2E = 64'h434FFFFFFFFFFBF7; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'h4340001FFFFFF5FA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"200735\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'h0000000000000000; - ans = 64'h8360000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"201041\n"); - end - ReadData1E = 64'h3815CFAC7B87B8E2; - ReadData2E = 64'h4342C0A02E3CB0AF; - ReadData3E = 64'hBCA00020001FFFFE; - ans = 64'hBCA0001E671C7836; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"201347\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC3E3BFFFFFFFFFFF; - ReadData3E = 64'hC000000000000000; - ans = 64'hC000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"201653\n"); - end - ReadData1E = 64'h7FE0400000800000; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'h43FFFFFDFFFFFFBF; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"201959\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hB81FFFFFFF800008; - ReadData3E = 64'h3FEFFFFFFF8FFFFF; - ans = 64'h3FEFFFFFFF8FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"202265\n"); - end - ReadData1E = 64'h41CFFFEFFFFFFFFD; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"202571\n"); - end - ReadData1E = 64'hC1DFFFFFFE007FFF; - ReadData2E = 64'h37F003FFEFFFFFFF; - ReadData3E = 64'hBFA26A7786C5CB13; - ans = 64'hBFA26A7786C5CB13; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"202877\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'h001F000000000006; - ans = 64'h836FFFFFFFFFFFFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"203183\n"); - end - ReadData1E = 64'hB80FEFFFFFE00000; - ReadData2E = 64'hD3BFFC00001FFFFF; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h4BDFEC01FFFFF3FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"203489\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'h7FF0000000000001; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"203795\n"); - end - ReadData1E = 64'h402FFFFFFFFE7FFE; - ReadData2E = 64'hC0D5A7AD5AE857AD; - ReadData3E = 64'hCAD5D349067B07E9; - ans = 64'hCAD5D349067B07E9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"204101\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC06FFFFFFBBFFFFF; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h3FF0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"204407\n"); - end - ReadData1E = 64'h4EF101FFFFFFFFFE; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'hBFC400000FFFFFFE; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"204713\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'h402FFFFFF7FFFFFD; - ReadData3E = 64'hBC0DFFFFFFFFFDFF; - ans = 64'hBC0DFFFFFFFFFDFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"205019\n"); - end - ReadData1E = 64'hC18A72215CF98D87; - ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"205325\n"); - end - ReadData1E = 64'hC10FFFFFFFFFE000; - ReadData2E = 64'hFFF0576627B050D5; - ReadData3E = 64'hB80DFFFFFBFFFFFF; - ans = 64'hFFF8576627B050D5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"205631\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'hC1D03FFFF0000000; - ans = 64'hC1D03FFFF1000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"205937\n"); - end - ReadData1E = 64'hBE18A0CAC8A2538B; - ReadData2E = 64'hBF1FFFFFFFFE003F; - ReadData3E = 64'h8010000000000001; - ans = 64'h3D48A0CAC8A0C9AF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"206243\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"206549\n"); - end - ReadData1E = 64'hBF7FFC000000007F; - ReadData2E = 64'h480BFFFFFC000000; - ReadData3E = 64'h7FD0E7C95060F159; - ans = 64'h7FD0E7C95060F159; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"206855\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC68000000003FFFE; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hBFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"207161\n"); - end - ReadData1E = 64'h53B00003FFFFFF7F; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'hC0480001FFFFFFFF; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"207467\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hC03FFFFE00000002; - ReadData3E = 64'h40A4791D49CC2DB1; - ans = 64'h40A4791D49CC2DB1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"207773\n"); - end - ReadData1E = 64'hBFA00001DFFFFFFF; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'hC340000000000000; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"208079\n"); - end - ReadData1E = 64'hB8000000FFFFF7FF; - ReadData2E = 64'hBFDFFE0000000003; - ReadData3E = 64'h41E00800000000FF; - ans = 64'h41E00800000000FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"208385\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'hBFDF7FBFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"208691\n"); - end - ReadData1E = 64'hB80FDFFFFFFFFDFF; - ReadData2E = 64'hC3C0000000400002; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h3BDFE000007F7E03; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"208997\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFF; - ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"209303\n"); - end - ReadData1E = 64'h3FB800007FFFFFFF; - ReadData2E = 64'h7C30000003FFFFE0; - ReadData3E = 64'hB7EF87FFFFFFFFFF; - ans = 64'h7BF8000085FFFFEF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"209609\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBCA39AB8CC6231C7; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'h3FDFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"209915\n"); - end - ReadData1E = 64'h418FE00000000000; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'hBCA007FFDFFFFFFE; - ans = 64'hBCA007FFDFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"210221\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hDDF0001FF7FFFFFF; - ReadData3E = 64'h40301FFFFFFFFFF8; - ans = 64'h40301FFFFFFFFFF8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"210527\n"); - end - ReadData1E = 64'hC09000DFFFFFFFFE; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'h4010000000000001; - ans = 64'h4010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"210833\n"); - end - ReadData1E = 64'h41C10000000001FE; - ReadData2E = 64'h40A2D6D7190048EE; - ReadData3E = 64'h3FB0400FFFFFFFFF; - ans = 64'h427404448A9050D9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"211139\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'h3F600000101FFFFE; - ans = 64'h3F600000101FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"211445\n"); - end - ReadData1E = 64'h403FFFFFFFFFFFF9; - ReadData2E = 64'hC7F0001080000000; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"211751\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'hC340000000000000; - ans = 64'hC340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"212057\n"); - end - ReadData1E = 64'h47F00FFFFF7FFFFF; - ReadData2E = 64'h3F08F8194952D2A2; - ReadData3E = 64'h3FE6D31424C9EF4B; - ans = 64'h4709111161D464A9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"212363\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBFD00040000003FF; - ReadData3E = 64'hBFD0000000000000; - ans = 64'hBFD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"212669\n"); - end - ReadData1E = 64'h348EE00000000000; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'hBF2FFF7FFFFFDFFE; - ans = 64'hBF2FFF7FFFFFDFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"212975\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC1D84EFBB512A72A; - ReadData3E = 64'hBE69AF2F69623970; - ans = 64'hBE69AF2F69623970; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"213281\n"); - end - ReadData1E = 64'hBFFAA0994C9B21E2; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hC00FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"213587\n"); - end - ReadData1E = 64'h3A3FFFFFDFF80000; - ReadData2E = 64'h40900000000E0000; - ReadData3E = 64'hBFE0FFE000000000; - ans = 64'hBFE0FFE000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"213893\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'hD8A8756C95FF9ED8; - ans = 64'hD8A8756C95FF9ED8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"214199\n"); - end - ReadData1E = 64'h59DFFFFFFE0007FE; - ReadData2E = 64'hC9C000FFFFFFC000; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"214505\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'h4010000000000001; - ans = 64'h4010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"214811\n"); - end - ReadData1E = 64'h43E256FC6CB56CC4; - ReadData2E = 64'h7FD0001000000000; - ReadData3E = 64'hBFF00000203FFFFF; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"215117\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h001FFFFBFFFFF800; + ReadData2E = 64'hBA5FE00000000001; ReadData3E = 64'h3CA0000000000001; ans = 64'h3CA0000000000001; FrmE = 3'b000; @@ -27514,12 +7350,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"215423\n"); + $fwrite(fp,"187186\n"); end - ReadData1E = 64'hB7FD14550750159C; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'hC7E00007FFEFFFFF; - ans = 64'hC7E00007FFEFFFFF; + ReadData1E = 64'h3C100000008003FE; + ReadData2E = 64'hC1EC744100FFA13D; + ReadData3E = 64'h43D0007FFEFFFFFE; + ans = 64'h43D0007FFEFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -27553,12 +7389,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"215729\n"); + $fwrite(fp,"188187\n"); end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBEBCCD02BE345203; - ReadData3E = 64'h439FFFFFFFFFFF80; - ans = 64'h439FFFFFFFFFFF80; + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -27592,2001 +7428,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"216035\n"); + $fwrite(fp,"189188\n"); end - ReadData1E = 64'hC3D000087FFFFFFF; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'h3FFFFFFFFFFFFFFE; - ans = 64'hC07FE010FFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"216341\n"); - end - ReadData1E = 64'hC04000000F7FFFFF; - ReadData2E = 64'hC4AFFFFC00000010; - ReadData3E = 64'hC1EFFFFFFFF7DFFE; - ans = 64'h44FFFFFC1EFFFC1E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"216647\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'h41EFE05B7227E188; - ans = 64'h41EFE05B7227E188; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"216953\n"); - end - ReadData1E = 64'hC26E000000000000; - ReadData2E = 64'h002FFFF77FFFFFFF; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"217259\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hC00FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"217565\n"); - end - ReadData1E = 64'hC63FFFFFDFEFFFFF; - ReadData2E = 64'h40100000000000FC; - ReadData3E = 64'h47F76CA910E9A48C; - ans = 64'h47F76CA908E9A494; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"217871\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3330000000000803; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'h801FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"218177\n"); - end - ReadData1E = 64'hB7EFFFFFFEFBFFFF; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'hB7F2007FFFFFFFFF; - ans = 64'hB7F2008000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"218483\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h37E60289AEF484C8; - ReadData3E = 64'hC0E000000BFFFFFE; - ans = 64'hC0E000000BFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"218789\n"); - end - ReadData1E = 64'h3CA0007EFFFFFFFE; - ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"219095\n"); - end - ReadData1E = 64'h41DF800000003FFF; - ReadData2E = 64'h43C00000001FBFFF; - ReadData3E = 64'h380FFFFFFFF7F800; - ans = 64'h45AF8000003EC1FD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"219401\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'hC01962BD104E333A; - ans = 64'hC01962BD104E333A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"219707\n"); - end - ReadData1E = 64'h496FFFFFFF7FF800; - ReadData2E = 64'h47E000001FFFFFFF; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'h516000001FBFFBFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"220013\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'h3FFFFFFFFFFFFFFE; - ans = 64'h3FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"220319\n"); - end - ReadData1E = 64'h0ECFFFFFFFFFFFFA; - ReadData2E = 64'hC03FFBFFFEFFFFFF; - ReadData3E = 64'hC03FFEFBFFFFFFFE; - ans = 64'hC03FFEFBFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"220625\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC03FFFFFFFFFFFFF; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'h805EFFFFFFFFFFFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"220931\n"); - end - ReadData1E = 64'h3FF00000040000FE; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'hBCBFEFFFFFFFFFC0; - ans = 64'h3FE00000040000FA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"221237\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC3EA4F01DB82E6F6; - ReadData3E = 64'hC1D0000000800002; - ans = 64'hC1D0000000800002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"221543\n"); - end - ReadData1E = 64'hC975270E98987C51; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'h3FE0000000000001; - ans = 64'hC965270E98987C50; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"221849\n"); - end - ReadData1E = 64'hC01000000FFFFFFE; - ReadData2E = 64'hF6EFFFFFF000FFFF; - ReadData3E = 64'h41EFFE0080000000; - ans = 64'h7710000008007FF6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"222155\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'h400CCB5237997727; - ans = 64'h400CCB5237997727; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"222461\n"); - end - ReadData1E = 64'h43F0040010000000; - ReadData2E = 64'h47A1B34990150361; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'h4BA1B7B6742C5232; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"222767\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"223073\n"); - end - ReadData1E = 64'h401FFFBFFF7FFFFF; - ReadData2E = 64'h3E600000013FFFFF; - ReadData3E = 64'hC1F0001040000000; - ans = 64'hC1F0001040000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"223379\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h404FF80000000010; - ReadData3E = 64'h8000000000000000; - ans = 64'h006FF8000000000C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"223685\n"); - end - ReadData1E = 64'h2F400000000FBFFF; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'h41F606CA2848B3D9; - ans = 64'h41F606CA2848B3D9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"223991\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC02FFFFF0001FFFF; - ReadData3E = 64'h3E7F00003FFFFFFF; - ans = 64'h3E7F00003FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"224297\n"); - end - ReadData1E = 64'h3FEFFEFFE0000000; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'h3FDFFDFFBFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"224603\n"); - end - ReadData1E = 64'h4F0A74F16F87B7F7; - ReadData2E = 64'hC3EFDFFFFFFE0000; - ReadData3E = 64'hC06BE163A6D740EF; - ans = 64'hD30A5A7C7E1688F0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"224909\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'hBDA00BFFFFFFFFFF; - ans = 64'hBDA00BFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"225215\n"); - end - ReadData1E = 64'h480DA52CB9BE1522; - ReadData2E = 64'hBFF0000020007FFE; - ReadData3E = 64'hC010000000000000; - ans = 64'hC80DA52CF5095BBB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"225521\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'h3FE0000000000001; - ans = 64'h3FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"225827\n"); - end - ReadData1E = 64'h24A18A36F18AE59F; - ReadData2E = 64'h17C00080000001FE; - ReadData3E = 64'h356FFF8002000000; - ans = 64'h356FFF8002000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"226133\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h41EFC6443D52B99A; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"226439\n"); - end - ReadData1E = 64'h403BD20E5EDBB48B; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'h8C61D52AFF1B225C; - ans = 64'h403BD20E5EDBB48D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"226745\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC07FFFFFFFFFFFDC; - ReadData3E = 64'h41301E0000000000; - ans = 64'h41301E0000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"227051\n"); - end - ReadData1E = 64'h3922C21DDFDA7C7B; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h3CAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"227357\n"); - end - ReadData1E = 64'h43F00002FFFFFFFE; - ReadData2E = 64'hBE5FFFFFFFFFFFFF; - ReadData3E = 64'h4E4FFFFF1FFFFFFF; - ans = 64'h4E4FFFFF1FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"227663\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'h3F2D90DCFD91775A; - ans = 64'h3F2D90DCFD91775A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"227969\n"); - end - ReadData1E = 64'hB667FFFFEFFFFFFF; - ReadData2E = 64'hBE2003FFF8000000; - ReadData3E = 64'h4000000000000001; - ans = 64'h4000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"228275\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hBFDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"228581\n"); - end - ReadData1E = 64'h4340020000010000; - ReadData2E = 64'h3810000001FFFFEF; - ReadData3E = 64'h42BB43994E714E2E; - ans = 64'h42BB43994E714E2E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"228887\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h401FFC03FFFFFFFE; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"229193\n"); - end - ReadData1E = 64'h41FFFF7FFFFFFFE0; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'h7300801FFFFFFFFE; - ans = 64'h7300801FFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"229499\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC0007FFFFFFFDFFF; - ReadData3E = 64'h4C9FFFFDF8000000; - ans = 64'h4C9FFFFDF8000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"229805\n"); - end - ReadData1E = 64'h628FFFFBFC000000; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'hBCA0000000000000; - ans = 64'h629FFFFBFC000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"230111\n"); - end - ReadData1E = 64'hC01F7FFBFFFFFFFE; - ReadData2E = 64'hC130010020000000; - ReadData3E = 64'h3FBFF7FFFFFFDFFE; - ans = 64'h415F81F446BDF7FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"230417\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'hBC7FFFFFFFFF07FF; - ans = 64'hBC7FFFFFFFFF07FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"230723\n"); - end - ReadData1E = 64'h3FF0000040000001; - ReadData2E = 64'hC02000FFFFFF7FFF; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'hC024010040038000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"231029\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h3CAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"231335\n"); - end - ReadData1E = 64'h47EFFFFFFFF7FF7F; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'hC860000010003FFE; - ans = 64'hC860000010003FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"231641\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC4DFFFFFFFFFFFC1; + ReadData1E = 64'hC030000800000FFE; + ReadData2E = 64'hC02FFF81FFFFFFFF; ReadData3E = 64'hC34FFFFFFFFFFFFE; - ans = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFF7E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -29620,12 +7467,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"231947\n"); + $fwrite(fp,"190189\n"); end - ReadData1E = 64'h3FFFFF7FFDFFFFFF; - ReadData2E = 64'h4010000000000000; - ReadData3E = 64'h47748A41CB17831D; - ans = 64'h47748A41CB17831D; + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h3FE000000107FFFF; + ans = 64'h3FE000000107FFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -29659,12 +7506,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"232253\n"); + $fwrite(fp,"191190\n"); end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hB8100000000011FF; - ReadData3E = 64'h403FFFFFF87FFFFF; - ans = 64'h403FFFFFF87FFFFF; + ReadData1E = 64'h5211FFFFFFDFFFFE; + ReadData2E = 64'hBFEFFFFFFFFFF806; + ReadData3E = 64'h41C7B1F3BDC6E413; + ans = 64'hD211FFFFFFDFFB81; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -29698,480 +7545,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"232559\n"); + $fwrite(fp,"192191\n"); end - ReadData1E = 64'h3D7D028206CB6C42; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'h0010000000000001; - ans = 64'h3D9D028206CB6C44; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"232865\n"); - end - ReadData1E = 64'h41407FFF80000000; - ReadData2E = 64'hA640000020000000; - ReadData3E = 64'hC3E200000000003E; - ans = 64'hC3E200000000003E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"233171\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'h409FFFFFFFFEFFFD; - ans = 64'h409FFFFFFFFEFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"233477\n"); - end - ReadData1E = 64'hC7F0004010000000; - ReadData2E = 64'h38038FCF6BF4B472; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'hBFF7203B7D846763; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"233783\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'hBCA0000000000000; - ans = 64'hBCA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"234089\n"); - end - ReadData1E = 64'hC07223F0FE41D18A; - ReadData2E = 64'hBF90001FFFFFF7FE; - ReadData3E = 64'h3D70007FFFFF7FFF; - ans = 64'h401224154623C8FA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"234395\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h4319A2C1C0285F37; - ReadData3E = 64'h4340000000000000; - ans = 64'h4340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"234701\n"); - end - ReadData1E = 64'hBCAFFFFFFFC01000; - ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'hC0EFF00FFFFFFFFF; - ans = 64'hC0EFF00FFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"235007\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h43400021FFFFFFFF; - ReadData3E = 64'h3FCFFFFFFFE00004; - ans = 64'h3FCFFFFFFFE00004; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"235313\n"); - end - ReadData1E = 64'hB05FFFDFFFFEFFFF; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'hB3AFFFDFFFFEFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"235619\n"); - end - ReadData1E = 64'h0020000000000807; - ReadData2E = 64'h43EFFFEFFFFFFFF0; - ReadData3E = 64'h401FFFFFFCFFFFFF; - ans = 64'h401FFFFFFCFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"235925\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'h43C0000002000000; - ans = 64'h43C0000002000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"236231\n"); - end - ReadData1E = 64'hFFED5680A72E37A2; - ReadData2E = 64'h41F6874673086E01; + ReadData1E = 64'hB81FFF7FFFFDFFFE; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; ReadData3E = 64'hBFE0000000000000; - ans = 64'hFFF0000000000000; + ans = 64'hBFE0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30205,12 +7584,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"236537\n"); + $fwrite(fp,"193192\n"); end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'h0010000000000001; - ans = 64'h036FFFFFFFFFFFFC; + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hC03001FFFFFFFFFC; + ReadData3E = 64'hC3C03FFFFFFFFFFF; + ans = 64'hC3C03FFFFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30244,12 +7623,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"236843\n"); + $fwrite(fp,"194193\n"); end - ReadData1E = 64'h47F0001000000000; - ReadData2E = 64'h3D00010000000080; - ReadData3E = 64'h380A26E8BAE640A4; - ans = 64'h4500011001000080; + ReadData1E = 64'hC341001FFFFFFFFF; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h3F0000003FFFFF7E; + ans = 64'h4361001FFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30283,10 +7662,361 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"237149\n"); + $fwrite(fp,"195194\n"); end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h801B2DC8D53A6A81; + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hB7F000000007F800; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"196195\n"); + end + ReadData1E = 64'hBFDA49FA992E2122; + ReadData2E = 64'h47E0007FFFFFFFFB; + ReadData3E = 64'hBFB03FFFDFFFFFFE; + ans = 64'hC7CA4ACCE902EA8B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"197196\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"198197\n"); + end + ReadData1E = 64'h43EDA34FB1A1EA79; + ReadData2E = 64'h3E582EC8CFCBFD39; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h425665D084F0B8DE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"199198\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'hC1F7C2535E4F8663; + ans = 64'hC1F7C2535E4F8663; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"200199\n"); + end + ReadData1E = 64'h43DFFFFC00000080; + ReadData2E = 64'h47E0001FFFFFF7FF; + ReadData3E = 64'h37EFFFFFAFFFFFFF; + ans = 64'h4BD0001DFFFBF83F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"201200\n"); + end + ReadData1E = 64'hAA404000000000FF; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h0010000000000000; + ans = 64'h2DA04000000000FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"202201\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hC0000007FFFFFFFE; + ReadData3E = 64'h381FFF7FFFFFFFFF; + ans = 64'h381FFF7FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"203202\n"); + end + ReadData1E = 64'hC1FE2C4FC1C978F7; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h170E37CDF179B8CA; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"204203\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hC3F5A28FF5A26FF2; ReadData3E = 64'hC010000000000001; ans = 64'hC010000000000001; FrmE = 3'b000; @@ -30322,12 +8052,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"237455\n"); + $fwrite(fp,"205204\n"); end - ReadData1E = 64'h3FD0000000000A00; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'hE25FFFFFFF83FFFE; - ans = 64'hE25FFFFFFF83FFFE; + ReadData1E = 64'h3FAFFFFEFF000000; + ReadData2E = 64'hC1CFFFFFFFFE0020; + ReadData3E = 64'hC63E000000000000; + ans = 64'hC63E000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30361,12 +8091,207 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"237761\n"); + $fwrite(fp,"206205\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"207206\n"); + end + ReadData1E = 64'h40DFFFF7FFBFFFFF; + ReadData2E = 64'hC00FFFFFFFBFFFDF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC0FFFFF7FF7FFFEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"208207\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h43D0000000000013; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"209208\n"); + end + ReadData1E = 64'hC7E5C0867E73FCDB; + ReadData2E = 64'h80101FFFFFFFBFFF; + ReadData3E = 64'h43D852EA3D2EE073; + ans = 64'h43D852EA3D2EE073; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"210209\n"); + end + ReadData1E = 64'h401FFFFFFFFFEFC0; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"211210\n"); end ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3FDD188A4F128793; - ReadData3E = 64'hBFEFFFFFFEDFFFFF; - ans = 64'hBFEFFFFFFEDFFFFF; + ReadData2E = 64'hC7F0000008200000; + ReadData3E = 64'hC08FFFFFC0000003; + ans = 64'hC08FFFFFC0000003; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30400,10 +8325,166 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"238067\n"); + $fwrite(fp,"212211\n"); end - ReadData1E = 64'h7FFFFFE0000FFFFF; - ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData1E = 64'hC00A6CA1BB1F1B0F; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'hBFFFFFFFFFFFFFFF; + ans = 64'hBFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"213212\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'h8000000080FFFFFF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"214213\n"); + end + ReadData1E = 64'h403D7FFFFFFFFFFF; + ReadData2E = 64'h4080800000000000; + ReadData3E = 64'hB45001FFFFFFFF7F; + ans = 64'h40CE6BFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"215214\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"216215\n"); + end + ReadData1E = 64'h47EFFFFFFFF7FFFE; + ReadData2E = 64'h47FFFFFFF80000FF; ReadData3E = 64'hFFFFFFFFFFFFFFFE; ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; @@ -30439,51 +8520,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"238373\n"); - end - ReadData1E = 64'hC3EFFFFFFFFFEE00; - ReadData2E = 64'hC7F000000000803F; - ReadData3E = 64'hC1CFDFBFFFFFFFFF; - ans = 64'h4BF000000000773F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"238679\n"); + $fwrite(fp,"217216\n"); end ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'h30F5B31E15D86A5A; - ans = 64'h3FFFFFFFFFFFFFFC; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h434FFFEDFFFFFFFF; + ans = 64'h434FFFEDFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30517,12 +8559,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"238985\n"); + $fwrite(fp,"218217\n"); end - ReadData1E = 64'hDF90800000003FFE; - ReadData2E = 64'hD7E1FFFFFFFFFFFE; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h77829000000047FC; + ReadData1E = 64'h3FF04000007FFFFF; + ReadData2E = 64'h40275DCB58932C8A; + ReadData3E = 64'hC7E0000000000009; + ans = 64'hC7E0000000000009; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30556,12 +8598,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"239291\n"); + $fwrite(fp,"219218\n"); + end + ReadData1E = 64'hC03FFE000000000F; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'hC023FF0000000008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"220219\n"); end ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hBFAFFFFFFFFEFFF7; + ReadData3E = 64'hC1CF8000000007FE; + ans = 64'hC1CF8000000007FE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30595,12 +8676,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"239597\n"); + $fwrite(fp,"221220\n"); end - ReadData1E = 64'hC08FFFFF00003FFF; - ReadData2E = 64'h3FD0080000000004; - ReadData3E = 64'hC388EF1792D83470; - ans = 64'hC388EF1792D83478; + ReadData1E = 64'hBFD0FFFF7FFFFFFE; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h7FDFF7FFFFFFFFFC; + ans = 64'h7FDFF7FFFFFFFFFC; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30634,12 +8715,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"239903\n"); + $fwrite(fp,"222221\n"); end ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h381000000FFFFF7E; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h4806ECBC72E0C29C; + ReadData3E = 64'h8010000000000001; + ans = 64'h0826ECBC72E0C299; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30673,12 +8754,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"240209\n"); + $fwrite(fp,"223222\n"); end - ReadData1E = 64'h403FFFFDFFFFFEFE; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'hC00FFBFDFFFFFFFE; - ans = 64'h7FF0000000000000; + ReadData1E = 64'hC03ADEEAEBF564AA; + ReadData2E = 64'hC76085DC82C566A9; + ReadData3E = 64'h802000008000000E; + ans = 64'h47ABBFBA417BB2BF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30712,12 +8793,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"240515\n"); + $fwrite(fp,"224223\n"); end ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hEB8FDFBFFFFFFFFF; - ReadData3E = 64'hC032000000003FFF; - ans = 64'hC032000000003FFF; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h0027FFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30751,12 +8832,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"240821\n"); + $fwrite(fp,"225224\n"); end - ReadData1E = 64'h37E00100003FFFFF; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; + ReadData1E = 64'h3FB00000000003EF; + ReadData2E = 64'h39D0037FFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30790,51 +8871,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"241127\n"); - end - ReadData1E = 64'hBF8CD92404A3E8B5; - ReadData2E = 64'hFFE000000FFF7FFF; - ReadData3E = 64'h8000102000000000; - ans = 64'h7F7CD924217C25EF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"241433\n"); + $fwrite(fp,"226225\n"); end ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'h4020000010080000; - ans = 64'h7FF0000000000000; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'hB56510B8120DB41B; + ans = 64'hB56510B8120DB41B; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30868,12 +8910,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"241739\n"); + $fwrite(fp,"227226\n"); end - ReadData1E = 64'hB35FFFEFDFFFFFFE; - ReadData2E = 64'hC0900007FFFFBFFE; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'hBCAFFFFFFFFFFFFF; + ReadData1E = 64'hBCE7A0BCB9936A93; + ReadData2E = 64'h00F3FFFFFEFFFFFF; + ReadData3E = 64'h434000000FFEFFFE; + ans = 64'h434000000FFEFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30907,12 +8949,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"242045\n"); + $fwrite(fp,"228227\n"); + end + ReadData1E = 64'h47F1080000000000; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h4801080000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"229228\n"); end ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'hFFFFFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h001FFFFFDBFFFFFF; + ReadData3E = 64'hBFC00000001FFF7F; + ans = 64'hBFC00000001FFF7F; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30946,12 +9027,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"242351\n"); + $fwrite(fp,"230229\n"); end - ReadData1E = 64'hBFE9E4420B1827EE; - ReadData2E = 64'hC190000080000002; - ReadData3E = 64'hB73C9715382BE1E6; - ans = 64'h4189E442DA3A384A; + ReadData1E = 64'hC008EE6CD19CC4F4; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hC1F0403FFFFFFFFF; + ans = 64'hC1F0404000C77366; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -30985,128 +9066,440 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"242657\n"); + $fwrite(fp,"231230\n"); end ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h41CAA0EB1CCD7918; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hBFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"242963\n"); - end - ReadData1E = 64'hCC0FFFFFDFFFFFBF; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'hBE80080000008000; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"243269\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hB980FFFFF7FFFFFE; - ReadData3E = 64'hA28FFFFFFF83FFFF; - ans = 64'hA28FFFFFFF83FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"243575\n"); - end - ReadData1E = 64'h43FFFF000000001F; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'hC01FFFFFF0000002; ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"232231\n"); + end + ReadData1E = 64'h3F9DFFFFFEFFFFFF; + ReadData2E = 64'hC020000002000003; + ReadData3E = 64'h3CA0741D29A0DC90; + ans = 64'hBFCE000002C00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"233232\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"234233\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFE0; + ReadData2E = 64'hFFF0000000003FFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hFFF8000000003FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"235234\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'hE28A0347BF76077E; + ans = 64'hE28A0347BF76077E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"236235\n"); + end + ReadData1E = 64'h4180000000200001; + ReadData2E = 64'h43CFFFF000000000; + ReadData3E = 64'hB52FFFFFFBFC0000; + ans = 64'h455FFFF0003FFFE2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"237236\n"); + end + ReadData1E = 64'hC7F00000DFFFFFFE; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"238237\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'h3C90000001FF8000; + ReadData3E = 64'h223E55794AD4B7E2; + ans = 64'h223E55794AD4B7E2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"239238\n"); + end + ReadData1E = 64'h3FC0000000000102; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h437FFFFFDFFBFFFE; + ans = 64'h7FC0000000000101; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"240239\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'hC004EF3ADB2D2AB0; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"241240\n"); + end + ReadData1E = 64'h4B10000000DFFFFE; + ReadData2E = 64'h3E50000000000000; + ReadData3E = 64'h43E00000100FFFFE; + ans = 64'h4970000000DFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"242241\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; ans = 64'h7FFFFFFFFFFFFFFF; FrmE = 3'b000; #10 @@ -31141,85 +9534,7 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"243881\n"); - end - ReadData1E = 64'h555FFE00000001FF; - ReadData2E = 64'h401FFEFFFFFBFFFF; - ReadData3E = 64'hC3E6BCB070CDA62F; - ans = 64'h558FFD000FFC023E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"244187\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'h41F0001000000001; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"244493\n"); + $fwrite(fp,"243242\n"); end ReadData1E = 64'h402FFFFDFFFF7FFE; ReadData2E = 64'h403C63BB8B2B2B77; @@ -31258,129 +9573,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"244799\n"); + $fwrite(fp,"244243\n"); end ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"245105\n"); - end - ReadData1E = 64'hC3CFF7FFFFEFFFFE; - ReadData2E = 64'h507000000000101F; - ReadData3E = 64'hB8000000000011FF; - ans = 64'hD44FF7FFFFF02034; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"245411\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h000FFFFFDFFFFFF0; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h3FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"245717\n"); - end - ReadData1E = 64'h9DF0000002FFFFFE; ReadData2E = 64'h8000000000000001; - ReadData3E = 64'hB72FFFFBFFFFFFFE; - ans = 64'hB72FFFFBFFFFFFFE; + ReadData3E = 64'hBB1EC59EA72D5595; + ans = 64'hBB1EC59EA72D5595; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -31414,12 +9612,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"246023\n"); + $fwrite(fp,"245244\n"); end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hFFDDC2F0D865AC3F; - ReadData3E = 64'hBF700000000007FF; - ans = 64'hBFFDD2F0D865AC43; + ReadData1E = 64'h40614AECE1E6620F; + ReadData2E = 64'hC4DE03FFFFFFFFFF; + ReadData3E = 64'h3FFFFFB7FFFFFFFE; + ans = 64'hC5503867716438BA; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -31453,7149 +9651,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"246329\n"); + $fwrite(fp,"246245\n"); end - ReadData1E = 64'hBFBFFFFBFFBFFFFF; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'h434FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"246635\n"); - end - ReadData1E = 64'hB32585C41E783BBC; - ReadData2E = 64'hC3C0001000000020; - ReadData3E = 64'hC74FFFFFEFFFFFF8; - ans = 64'hC74FFFFFEFFFFFF8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"246941\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData1E = 64'hC29FF7FDFFFFFFFF; ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'h7FE285F0E49D4A7B; - ans = 64'h7FE285F0E49D4A7B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"247247\n"); - end - ReadData1E = 64'hC3500100000FFFFF; - ReadData2E = 64'hBDF0E1E8C66ADBAB; - ReadData3E = 64'h8010000000000000; - ans = 64'h4150E2F6E5082440; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"247553\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'hFFE0000000000001; - ans = 64'hFFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"247859\n"); - end - ReadData1E = 64'h3F700007FFFEFFFE; - ReadData2E = 64'hB7FC3FB36C2D5B84; - ReadData3E = 64'hBFFFFBFFFFFFF7FF; - ans = 64'hBFFFFBFFFFFFF7FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"248165\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3F97A677C36D84B9; - ReadData3E = 64'hBFE0000000000001; - ans = 64'hBFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"248471\n"); - end - ReadData1E = 64'h401537E560C75BAB; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'h3FB0000007FFFFEF; - ans = 64'h3FB0000007FFFFEF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"248777\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h406FFFBFFFFFF7FF; - ReadData3E = 64'h403FE000000FFFFF; - ans = 64'h403FE000000FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"249083\n"); - end - ReadData1E = 64'hC00000080000000E; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'hC01FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"249389\n"); - end - ReadData1E = 64'hBF9F2337AA50C4F6; - ReadData2E = 64'h41FFFBFFFFFFFFF0; - ReadData3E = 64'hC0BFFFFFDFFFFFBF; - ans = 64'hC1AF1F93435B3ACE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"249695\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'hC3EE512EE6662CCD; - ans = 64'hC3EE512EE6662CCD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"250001\n"); - end - ReadData1E = 64'hDA1FE00000040000; - ReadData2E = 64'h40301FFFFFFFFFDF; - ReadData3E = 64'h0000000000000001; - ans = 64'hDA600FE0000203DF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"250307\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'h434FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"250613\n"); - end - ReadData1E = 64'hC00FFFCFFFFFFFFF; - ReadData2E = 64'hE97E000000800000; - ReadData3E = 64'hBFEFFFFFF7FFF800; - ans = 64'h699DFFD3007FFF3F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"250919\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBCAFFF7FFF800000; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'h3FDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"251225\n"); - end - ReadData1E = 64'hC02000000400001E; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'hB80FFFFC0000001F; - ans = 64'h3CD000000400001E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"251531\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC0A0004001FFFFFF; - ReadData3E = 64'hC28F000000000100; - ans = 64'hC28F000000000100; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"251837\n"); - end - ReadData1E = 64'hC06292D76228137B; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'h4010000000000000; - ans = 64'h4010000000000013; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"252143\n"); - end - ReadData1E = 64'h3CA80000000000FE; - ReadData2E = 64'h8017FB4D2CCAA271; - ReadData3E = 64'h3F6000000010000F; - ans = 64'h3F6000000010000F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"252449\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'hBE11E49856E4D7E0; - ans = 64'hBE11E49856E4D7E0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"252755\n"); - end - ReadData1E = 64'hC3FBFFFEFFFFFFFE; - ReadData2E = 64'hBFF0007FFFC00000; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"253061\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'hC01FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"253367\n"); - end - ReadData1E = 64'hC80EF613678AF683; - ReadData2E = 64'hCD8172A803FEC66C; - ReadData3E = 64'hC7EFFFFFFFFF8020; - ans = 64'h55A0E1A983E624A4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"253673\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBF1291958811E1EE; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hBCAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"253979\n"); - end - ReadData1E = 64'hCABFFF0000003FFF; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'h002FFFFFBFFFFFFC; - ans = 64'h4A9FFF0000003FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"254285\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h6E3ABB40B7437E23; - ReadData3E = 64'hCB5F39111E61024E; - ans = 64'hCB5F39111E61024E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"254591\n"); - end - ReadData1E = 64'hBCA100000000FFFE; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'hC000000000000001; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"254897\n"); - end - ReadData1E = 64'hE3F00000001FBFFF; - ReadData2E = 64'h4800FFFFFFFFFF7F; - ReadData3E = 64'h0132E73035E25848; - ans = 64'hEC0100000021BB7E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"255203\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'hB6B662EDDC60BE5B; - ans = 64'hB6B662EDDC60BE5B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"255509\n"); - end - ReadData1E = 64'hBF879A0574BE9D7E; - ReadData2E = 64'h3FE5C6796BC3A859; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"255815\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'h4010000000000000; - ans = 64'h4010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"256121\n"); - end - ReadData1E = 64'h3FC623839C67FBA6; - ReadData2E = 64'h5FC855109CEE8C4A; - ReadData3E = 64'hE8F0003FFFF00000; - ans = 64'hE8F0003FFFF00000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"256427\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h002493107A4421CE; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h3CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"256733\n"); - end - ReadData1E = 64'hC02FFFFFE01FFFFF; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'h4DA0003FFFFFDFFF; - ans = 64'h4DA0003FFFFFDFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"257039\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3FEE00007FFFFFFF; - ReadData3E = 64'h001E4E082A17FB0B; - ans = 64'h0026A704350BFD84; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"257345\n"); - end - ReadData1E = 64'hA240000000004000; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h3FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"257651\n"); - end - ReadData1E = 64'h41B0000000000006; - ReadData2E = 64'hC7EFF7FFFFFEFFFF; - ReadData3E = 64'hB8139885504DA644; - ans = 64'hC9AFF7FFFFFF000B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"257957\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'hBDBBFFFFFFFFF7FE; - ans = 64'hBDBBFFFFFFFFF7FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"258263\n"); - end - ReadData1E = 64'h3FB0FFFFFFFFFEFF; - ReadData2E = 64'h37E0000000001FFD; - ReadData3E = 64'h7FE0000000000000; - ans = 64'h7FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"258569\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'hC000000000000001; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"258875\n"); - end - ReadData1E = 64'h223E000000000007; - ReadData2E = 64'hC020000003FFFFBE; - ReadData3E = 64'h3F3FFFFFFE010000; - ans = 64'h3F3FFFFFFE010000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"259181\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3FFFFFFFEFF7FFFF; - ReadData3E = 64'h8010000000000001; - ans = 64'h000FFFFFEFF7FFFA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"259487\n"); - end - ReadData1E = 64'h403FFFFFFEE00000; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'h7FEFDFFFF7FFFFFF; - ans = 64'h7FEFDFFFF7FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"259793\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h7FEA683B1EC46B7D; - ReadData3E = 64'h37EF003FFFFFFFFF; - ans = 64'h400A683B1EC46B7A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"260099\n"); - end - ReadData1E = 64'h4000000000200002; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hC008000000200000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"260405\n"); - end - ReadData1E = 64'hC03FFFC000000007; - ReadData2E = 64'hC3C000FFFDFFFFFF; - ReadData3E = 64'h3FE800000FFFFFFE; - ans = 64'h441000DFFC000403; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"260711\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'hC3FE00FFFFFFFFFF; - ans = 64'hC3FE00FFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"261017\n"); - end - ReadData1E = 64'hDC70000010020000; - ReadData2E = 64'h40900D506FFEE146; - ReadData3E = 64'hC340000000000001; - ans = 64'hDD100D50800E3360; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"261323\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h3FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"261629\n"); - end - ReadData1E = 64'h5DA000FFFFFFFFFF; - ReadData2E = 64'hBFE0080000000004; - ReadData3E = 64'hBFF07FFFFFBFFFFF; - ans = 64'hDD90090080000003; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"261935\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h401FFFFFF0000400; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h0041FFFFF80001FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"262241\n"); - end - ReadData1E = 64'h412007FFFEFFFFFF; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'h4012000040000000; - ans = 64'hC13007FB7EFFEFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"262547\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h4380000000100003; - ReadData3E = 64'hD43000000FFFFF7F; - ans = 64'hD43000000FFFFF7F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"262853\n"); - end - ReadData1E = 64'hC03C5E2AE452C6D3; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h404C9E2AE452C6D1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"263159\n"); - end - ReadData1E = 64'hC3DFAF53AFB9F351; - ReadData2E = 64'hBFAFF8000000FFFF; - ReadData3E = 64'h43CAD1C87055F27F; - ans = 64'h43CEC6B56BAFD2C9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"263465\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'hC7E4008000000000; - ans = 64'hC7E4008000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"263771\n"); - end - ReadData1E = 64'h4033C0DD77566DA9; - ReadData2E = 64'h47E001FFFFFFFE00; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'h4823C355930555FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"264077\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hBFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"264383\n"); - end - ReadData1E = 64'hBFC5C91E28AE3927; - ReadData2E = 64'h800FDFFFFFFFFFFE; - ReadData3E = 64'hC90FFF00003FFFFE; - ans = 64'hC90FFF00003FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"264689\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h3FB000000000401F; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"264995\n"); - end - ReadData1E = 64'h47F0007FFE000000; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'h41EAF62DF12D1A41; - ans = 64'hC800007FFE000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"265301\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBFDFFFFFFE00003F; - ReadData3E = 64'h41FFF7FFFFFC0000; - ans = 64'h41FFF7FFFFFC0000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"265607\n"); - end - ReadData1E = 64'h2FC0000800001FFF; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hBFD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"265913\n"); - end - ReadData1E = 64'h380AEFDDEF1C3975; - ReadData2E = 64'h4013173BC23790A3; - ReadData3E = 64'h43CFC000000003FF; - ans = 64'h43CFC000000003FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"266219\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'h408000FFFFFFFFF8; - ans = 64'h408000FFFFFFFFF8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"266525\n"); - end - ReadData1E = 64'hB9FF000000020000; - ReadData2E = 64'hC03DDB784BF264CB; - ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'hC00FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"266831\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h3FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"267137\n"); - end - ReadData1E = 64'hC1E444153B5F480B; - ReadData2E = 64'h437CF734BD2A8438; - ReadData3E = 64'hC88CB6C24967E7EC; - ans = 64'hC88CB6C24967E7F5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"267443\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC1FC000000080000; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"267749\n"); - end - ReadData1E = 64'hBFFFFFFF7FFFFF7F; - ReadData2E = 64'hC010000000000001; - ReadData3E = 64'hC3F000000400FFFE; - ans = 64'hC3F000000400FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"268055\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h48B0715E3CE4DAB7; - ReadData3E = 64'h41E00000000000DF; - ans = 64'h41E00000000000DF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"268361\n"); - end - ReadData1E = 64'h4EB0FFFFFFFFFF80; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'hCEE0FFFFFFFFFF7F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"268667\n"); - end - ReadData1E = 64'h37FFFFFEEFFFFFFF; - ReadData2E = 64'h802FFE00003FFFFE; - ReadData3E = 64'hBFE9184238350997; - ans = 64'hBFE9184238350997; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"268973\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'h43CFCA9038906DA8; - ans = 64'h43CFCA9038906DA8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"269279\n"); - end - ReadData1E = 64'hBFDFFFFFF7FFE000; - ReadData2E = 64'h5EC0000000002FFF; - ReadData3E = 64'h4000000000000000; - ans = 64'hDEAFFFFFF8003FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"269585\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hBFD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"269891\n"); - end - ReadData1E = 64'h43EFFFFFFFFC007E; - ReadData2E = 64'h1B1FFBFFFFC00000; - ReadData3E = 64'hC7E080000000003F; - ans = 64'hC7E080000000003F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"270197\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hBFCDD72B2723C364; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"270503\n"); - end - ReadData1E = 64'hC80FFFFEF0000000; - ReadData2E = 64'hC340000000000000; - ReadData3E = 64'hC01FFFFFFFF80007; - ans = 64'h4B5FFFFEF0000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"270809\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h47E0000000403FFF; - ReadData3E = 64'h4010F3DB191A1F8F; - ans = 64'h4010F3DB191A1F8F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"271115\n"); - end - ReadData1E = 64'h401FFFFC0007FFFF; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'hC36FFFFC00080001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"271421\n"); - end - ReadData1E = 64'h3FFFD00A729C4742; - ReadData2E = 64'hC3CFFFFFFF1FFFFE; - ReadData3E = 64'h3FC000000000BFFE; - ans = 64'hC3DFD00A71BD96F7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"271727\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'h43D5B0920D1BF88E; - ans = 64'h43D5B0920D1BF88E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"272033\n"); - end - ReadData1E = 64'h3CA27282D68BAADA; - ReadData2E = 64'h400FFFF80003FFFF; - ReadData3E = 64'hBFF0000000000001; - ans = 64'hBFEFFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"272339\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'h3CAFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"272645\n"); - end - ReadData1E = 64'h5F901FFFFFFFFFFE; - ReadData2E = 64'h47EFFF000000FFFF; - ReadData3E = 64'hBFDFFFFFF7FFFFFB; - ans = 64'h67901F7F000080FD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"272951\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h657FFFFFFFFBFFF6; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"273257\n"); - end - ReadData1E = 64'hC0300FFFFFFFFEFF; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'hC004003FFFFFFFFE; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"273563\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h43E1AA2F8A851184; - ReadData3E = 64'hB8000000007FFFFD; - ans = 64'hB8000000007FFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"273869\n"); - end - ReadData1E = 64'h3F8FFFFDFFFFFE00; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'h0010000000000000; - ans = 64'hFF7FFFFDFFFFFE02; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"274175\n"); - end - ReadData1E = 64'hB7EFFF00000001FE; - ReadData2E = 64'h77CFFFFFFFE10000; - ReadData3E = 64'hA3A0000000007FBF; - ans = 64'hEFCFFEFFFFE102F6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"274481\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'hB93E92AC23EB1A80; - ans = 64'hBFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"274787\n"); - end - ReadData1E = 64'h3E2FFFFF00001FFF; - ReadData2E = 64'h41E8C14DBD3E8F88; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h402AC14CF7343A5F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"275093\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'hC00FFFFFFFFFFFFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"275399\n"); - end - ReadData1E = 64'h41C010000007FFFF; - ReadData2E = 64'hC03FFE000000007E; - ReadData3E = 64'hBFF0001FFFFFFFF7; - ans = 64'hC2100EFF000BFFC6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"275705\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h1487869849373A4D; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'h401FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"276011\n"); - end - ReadData1E = 64'hC2780000000007FF; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'hC18FFC0000000004; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"276317\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h41758A7AFB86E8EF; - ReadData3E = 64'h402C084092D67AFA; - ans = 64'h402C084092D67AFA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"276623\n"); - end - ReadData1E = 64'h41CFFDFFFFFFFFFF; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'h8000000000000001; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"276929\n"); - end - ReadData1E = 64'hC7E14E030C337810; - ReadData2E = 64'hB4508B55779CF496; - ReadData3E = 64'h418FFFF00003FFFE; - ans = 64'h418FFFF00003FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"277235\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'h78EFFFFFFF7F7FFF; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"277541\n"); - end - ReadData1E = 64'hB8100800007FFFFF; - ReadData2E = 64'h421BC643D44ACF51; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFDFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"277847\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'h0010000000000000; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"278153\n"); - end - ReadData1E = 64'h57F0400000000003; - ReadData2E = 64'h3FEFF800000003FF; - ReadData3E = 64'h3FDFFFFFFEFE0000; - ans = 64'h57F03BF00000020A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"278459\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h4340007FFFFFFFEE; - ReadData3E = 64'hC010000000000000; - ans = 64'hC010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"278765\n"); - end - ReadData1E = 64'h33D0000003FE0000; - ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'h3FCFDFFFFFFDFFFF; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"279071\n"); - end - ReadData1E = 64'h000FFFFFFFFFFFFE; - ReadData2E = 64'h401000000000207F; - ReadData3E = 64'hBFEFF7FFFFFFFFFF; - ans = 64'hBFEFF7FFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"279377\n"); - end - ReadData1E = 64'h3EDFFF7BFFFFFFFF; - ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"279683\n"); - end - ReadData1E = 64'hBFF007FFFFFFBFFF; - ReadData2E = 64'hABFFFE00FFFFFFFE; - ReadData3E = 64'h3FFFFFFFFFFFFBFB; - ans = 64'h3FFFFFFFFFFFFBFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"279989\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'h7FDFFFFFC0001000; - ans = 64'h7FDFFFFFC0001000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"280295\n"); - end - ReadData1E = 64'h401E7FA35DDC0D0A; - ReadData2E = 64'hBFE0000400000040; - ReadData3E = 64'h3FD0000000000000; - ans = 64'hC00C7FAAFDC4E4FB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"280601\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'h8000000000000001; - ans = 64'h8000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"280907\n"); - end - ReadData1E = 64'hD1925886906206D4; - ReadData2E = 64'hC1E8EAED66B2863A; - ReadData3E = 64'hC0202003FFFFFFFF; - ans = 64'h538C9228BD9CEB27; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"281213\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC3F00000203FFFFE; - ReadData3E = 64'h4000000000000001; - ans = 64'h4000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"281519\n"); - end - ReadData1E = 64'h3FEFFFFF5FFFFFFF; - ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'h4029E3589C74D6C1; - ans = 64'h4029E3589C74D6C1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"281825\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h4755B660F1AE640B; - ReadData3E = 64'h3790000000001BFE; - ans = 64'h3790000000001BFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"282131\n"); - end - ReadData1E = 64'h380FF00FFFFFFFFF; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"282437\n"); - end - ReadData1E = 64'hBFE200000000FFFE; - ReadData2E = 64'h41FD6E4653630B63; - ReadData3E = 64'h480FFFF008000000; - ans = 64'h480FFFF008000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"282743\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'hC3E000000002003E; - ans = 64'hC3E000000002003E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"283049\n"); - end - ReadData1E = 64'hC020000400000004; - ReadData2E = 64'h41064F83F491A335; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hC1364F898872A05F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"283355\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"283661\n"); - end - ReadData1E = 64'hBFE5000000000000; - ReadData2E = 64'hB49FEFFEFFFFFFFE; - ReadData3E = 64'hC1CFDFFFFFF7FFFE; - ans = 64'hC1CFDFFFFFF7FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"283967\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h3FF1FFFFFFBFFFFF; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'hBFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"284273\n"); - end - ReadData1E = 64'hC16000000000021E; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'h41C0000000000100; - ans = 64'h41C0000000000100; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"284579\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC1D022D17DB65925; - ReadData3E = 64'h7FDE0000FFFFFFFF; - ans = 64'h7FDE0000FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"284885\n"); - end - ReadData1E = 64'h3FDE0001FFFFFFFE; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"285191\n"); - end - ReadData1E = 64'hC7FFC00000003FFF; - ReadData2E = 64'h3D20000000021FFE; - ReadData3E = 64'h2EEFFFFFFFFF6FFE; - ans = 64'hC52FC0000004777B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"285497\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'hC1F0007DFFFFFFFE; - ans = 64'hC1F0007DFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"285803\n"); - end - ReadData1E = 64'hC173218EED2EAD60; - ReadData2E = 64'hC620000040000080; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'h47A3218F39B4E9AE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"286109\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"286415\n"); - end - ReadData1E = 64'hC2A902A218479D05; - ReadData2E = 64'hA0BFFFE020000000; - ReadData3E = 64'h41DBFFFFFFFEFFFF; - ans = 64'h41DBFFFFFFFEFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"286721\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h42F07DEEE25F8464; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'h3FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"287027\n"); - end - ReadData1E = 64'hC160000042000000; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'h4013FFFFFFFFFFFF; - ans = 64'h4013FFFFFFEFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"287333\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC16FFFDFFFFF7FFE; - ReadData3E = 64'hC7FFFFFFF7FFFFFF; - ans = 64'hC7FFFFFFF7FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"287639\n"); - end - ReadData1E = 64'h7FD000000BFFFFFF; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'h4340000000000001; - ans = 64'h7C9000000BFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"287945\n"); - end - ReadData1E = 64'hBFD0000010000008; - ReadData2E = 64'hC1EFFFFFFBFFFFFD; - ReadData3E = 64'h49600000001BFFFF; - ans = 64'h49600000001BFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"288251\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'hFFF003FC00000000; - ans = 64'hFFF803FC00000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"288557\n"); - end - ReadData1E = 64'hC06FDFBFFFFFFFFE; - ReadData2E = 64'h002000011FFFFFFF; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'h809FEFC23DBB7FFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"288863\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"289169\n"); - end - ReadData1E = 64'h842FFFFFFFFEFFFC; - ReadData2E = 64'hFFFFFFDFFFFFFFFD; - ReadData3E = 64'h1E80000200000010; - ans = 64'hFFFFFFDFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"289475\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h9590000001F7FFFF; - ReadData3E = 64'hBFE0000000000000; - ans = 64'hBFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"289781\n"); - end - ReadData1E = 64'h62DE00000007FFFF; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'h3FEFFFFBFFFFDFFF; - ans = 64'h62BE000000080001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"290087\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h41E0000000200007; - ReadData3E = 64'h414302D9B4ED0185; - ans = 64'h414302D9B4ED0185; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"290393\n"); - end - ReadData1E = 64'hB7F0FFFFFF7FFFFE; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"290699\n"); - end - ReadData1E = 64'hBFFE0FFFFFFFFFFF; - ReadData2E = 64'hBD203FFFFFFFF800; - ReadData3E = 64'hC311550C9132B40C; - ans = 64'hC311550C9132B40C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"291005\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'hC3DFFFF7FFFFC000; - ans = 64'hC3DFFFF7FFFFC000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"291311\n"); - end - ReadData1E = 64'hFFE000007FFFFFFA; - ReadData2E = 64'h3FB3EB2F6685C313; - ReadData3E = 64'h0000000000000000; - ans = 64'hFFA3EB3005DF3E40; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"291617\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'h4340000000000001; - ans = 64'h4340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"291923\n"); - end - ReadData1E = 64'hB8E701B553E06384; - ReadData2E = 64'h001000FFFFFFFFFB; - ReadData3E = 64'hBF9FFFFFFFFFDF80; - ans = 64'hBF9FFFFFFFFFDF80; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"292229\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h3AEFFFFFFFFFBEFF; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h3FD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"292535\n"); - end - ReadData1E = 64'hC7EFF7FFFDFFFFFF; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'h45BFFFFFF7FFFE00; - ans = 64'hC7DFF7FFFDF7FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"292841\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h41DFFFF3FFFFFFFE; - ReadData3E = 64'hC0100000BFFFFFFF; - ans = 64'hC0100000BFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"293147\n"); - end - ReadData1E = 64'h319000080000000F; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h400FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"293453\n"); - end - ReadData1E = 64'h37EFFFFFFFFF0FFF; - ReadData2E = 64'h429FFC0003FFFFFF; - ReadData3E = 64'h41CFFFF3FFFFFFFF; - ans = 64'h41CFFFF3FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"293759\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'hF2600100000FFFFE; - ans = 64'hF2600100000FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"294065\n"); - end - ReadData1E = 64'h43403FFFFFFFDFFF; - ReadData2E = 64'h3F900001EFFFFFFF; - ReadData3E = 64'h7FF0000000000001; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"294371\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"294677\n"); - end - ReadData1E = 64'hDFC0000000040000; - ReadData2E = 64'h380E000000000007; - ReadData3E = 64'h434FF7FFFEFFFFFF; - ans = 64'hD7DE000000078007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"294983\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h3FD744F5F33CC055; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'hBCAFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"295289\n"); - end - ReadData1E = 64'hC7E6D8109ACDBE41; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'hC02DFFBFFFFFFFFF; - ans = 64'hC7E6D8109ACDBE41; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"295595\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC020001003FFFFFF; - ReadData3E = 64'hC050003F7FFFFFFE; - ans = 64'hC050003F7FFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"295901\n"); - end - ReadData1E = 64'h434FFBFFFFFFFFE0; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'hC000000000000000; - ans = 64'h434FFBFFFFFFFFDF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"296207\n"); - end - ReadData1E = 64'hC6E0001FFFFFDFFE; - ReadData2E = 64'hC036D93D56E70AAC; - ReadData3E = 64'h439FFFFFF0000003; - ans = 64'h4726D96B09618AC5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"296513\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'hBFB00007FFFFFFFB; - ans = 64'hBFB00007FFFFFFFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"296819\n"); - end - ReadData1E = 64'h4025AAF27EF72E72; - ReadData2E = 64'h206B033642E4A6A9; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"297125\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h400FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"297431\n"); - end - ReadData1E = 64'h938020FFFFFFFFFF; - ReadData2E = 64'h001AFF91BAC0C01C; - ReadData3E = 64'h3FA9ED8FA7758F35; - ans = 64'h3FA9ED8FA7758F35; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"297737\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC000000000001080; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'h8000000000002102; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"298043\n"); - end - ReadData1E = 64'h402311AC49E54B80; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'hBEE0100000000002; - ans = 64'h403311ABC9654B7F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"298349\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBFF3FFFFDFFFFFFF; - ReadData3E = 64'hB81081FFFFFFFFFE; - ans = 64'hB81081FFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"298655\n"); - end - ReadData1E = 64'h43FFFFFF7FFFF000; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h440FFFFF7FFFF000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"298961\n"); - end - ReadData1E = 64'h002632D8A1656279; - ReadData2E = 64'hC12BFFFFDFFFFFFE; - ReadData3E = 64'h7BF57EED210A57A2; - ans = 64'h7BF57EED210A57A2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"299267\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'h40B1000003FFFFFE; - ans = 64'h40B1000003FFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"299573\n"); - end - ReadData1E = 64'h7FF0200000001FFF; - ReadData2E = 64'h400FEFFFFFFFE000; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'h7FF8200000001FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"299879\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'hC000000000000000; - ans = 64'hC000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"300185\n"); - end - ReadData1E = 64'h49A0002000000FFF; - ReadData2E = 64'h43F0000000BFFFFF; - ReadData3E = 64'hFFDF78B1B0067614; - ans = 64'hFFDF78B1B0067614; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"300491\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC1C00000000001FC; - ReadData3E = 64'h8010000000000000; - ans = 64'h81E00000008001FC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"300797\n"); - end - ReadData1E = 64'hC00080000003FFFE; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'hC7EF484B79B51CC3; - ans = 64'hC7EF484B79B51CC3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"301103\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h409FFEF7FFFFFFFF; - ReadData3E = 64'hB7F0000000000F00; - ans = 64'hB7F0000000000F00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"301409\n"); - end - ReadData1E = 64'hB7FFFFFFFFDFF000; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hBFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"301715\n"); - end - ReadData1E = 64'hC1E7B18F153C6AE9; - ReadData2E = 64'h3FE000000040000F; - ReadData3E = 64'hA75000FFFFFE0000; - ans = 64'hC1D7B18F159B313C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"302021\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h4010000000000000; - ReadData3E = 64'hBB10000000007FBE; - ans = 64'hBB10000000007FBE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"302327\n"); - end - ReadData1E = 64'h7FD00000000E0000; - ReadData2E = 64'hB33E000001FFFFFF; ReadData3E = 64'hC340000000000000; - ans = 64'hF31E0000021A3FFF; + ans = 64'hC340000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -38629,12 +9690,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"302633\n"); + $fwrite(fp,"247246\n"); end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h3FF0000000000001; + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'h15CFFBFFFFFFEFFF; + ReadData3E = 64'h43EFFF7FFFDFFFFF; + ans = 64'h43EFFF7FFFDFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -38668,12 +9729,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"302939\n"); + $fwrite(fp,"248247\n"); end - ReadData1E = 64'h3FCFFC0000000003; - ReadData2E = 64'hD080E00000000000; - ReadData3E = 64'h41ED6C31252172C3; - ans = 64'hD060DDE400000002; + ReadData1E = 64'hC5DFFFF800000400; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h800FF0000000FFFF; + ans = 64'h060FFFF8000003FF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -38707,12 +9768,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"303245\n"); + $fwrite(fp,"249248\n"); end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBFF613FC6392E9AA; - ReadData3E = 64'h0000000000000001; - ans = 64'h801613FC6392E9A9; + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'h00298BB3A1E7AAF0; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -38746,12 +9807,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"303551\n"); + $fwrite(fp,"250249\n"); end - ReadData1E = 64'h40407FFFFFFFBFFF; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'hC7F0000FFC000000; - ans = 64'hC7F0000FFC000000; + ReadData1E = 64'hC02000000FFFFDFF; + ReadData2E = 64'h41CFEFFFFFFFFFFF; + ReadData3E = 64'h3F3FFFFFFFF80001; + ans = 64'hC1FFF0001FEFF9FF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -38785,49 +9846,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"303857\n"); + $fwrite(fp,"251250\n"); end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h416FFFFFFFFFDFF6; - ReadData3E = 64'h40DE7B3AA73E78BE; - ans = 64'h40DE7B3AA73E78BE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"304163\n"); - end - ReadData1E = 64'h380FFFFEFFC00000; - ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; ReadData3E = 64'h3FDFFFFFFFFFFFFE; ans = 64'h3FDFFFFFFFFFFFFE; FrmE = 3'b000; @@ -38863,11 +9885,830 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"304469\n"); + $fwrite(fp,"252251\n"); end - ReadData1E = 64'h6690003F7FFFFFFF; - ReadData2E = 64'hFFEFFDFFDFFFFFFF; - ReadData3E = 64'hBA300000407FFFFE; + ReadData1E = 64'h000FFFFFFFFFFFAF; + ReadData2E = 64'h3FF000100000000F; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"253252\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h3FDFDFFFFF7FFFFF; + ans = 64'h3FDFDFFFFF7FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"254253\n"); + end + ReadData1E = 64'h381FFFFFBFEFFFFF; + ReadData2E = 64'h54A000010FFFFFFE; + ReadData3E = 64'hC030010010000000; + ans = 64'h4CD00000EFF7FDDD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"255254\n"); + end + ReadData1E = 64'hAF50000080000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"256255\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'h3FB80B1E3F6676A5; + ReadData3E = 64'h7FEFBFFFFFFFFFFB; + ans = 64'h7FEFBFFFFFFFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"257256\n"); + end + ReadData1E = 64'h434FFFFFFFFFF01E; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'hBD4FDFFFFFBFFFFF; + ans = 64'hC33FFFFFFFFFF020; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"258257\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'hC2200000001EFFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h82400000001EFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"259258\n"); + end + ReadData1E = 64'hBFA3CE761882FBA6; + ReadData2E = 64'h32000040007FFFFE; + ReadData3E = 64'h40D7EA4CED391C8D; + ans = 64'h40D7EA4CED391C8D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"260259\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h801FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"261260\n"); + end + ReadData1E = 64'h8024354E3C11ACCB; + ReadData2E = 64'h3D0800001FFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"262261\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h403FFFFFE7FFFFFF; + ans = 64'h403FFFFFE7FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"263262\n"); + end + ReadData1E = 64'hC100004000007FFF; + ReadData2E = 64'h407FFF7C00000000; + ReadData3E = 64'h3B4FFDFFFFFFFEFF; + ans = 64'hC18FFFFBFDF0FFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"264263\n"); + end + ReadData1E = 64'h7FF000000005FFFF; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h7FF800000005FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"265264\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'hBFC0000000000FF6; + ReadData3E = 64'hCDA68C031AE7B94C; + ans = 64'hCDA68C031AE7B94C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"266265\n"); + end + ReadData1E = 64'h3E7080003FFFFFFE; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'hC7FFFFFFF00FFFFF; + ans = 64'hC7FFFFFFF00FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"267266\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'h22DFFFFFB7FFFFFF; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"268267\n"); + end + ReadData1E = 64'hC1DF80000007FFFE; + ReadData2E = 64'h3FE24A740881D5BD; + ReadData3E = 64'h4AA001001FFFFFFF; + ans = 64'h4AA001001FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"269268\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"270269\n"); + end + ReadData1E = 64'h4790002FFFFFFFFF; + ReadData2E = 64'hBFF000000040007F; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC79000300040013E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"271270\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'hCFDFFFFE0000001E; + ans = 64'hCFDFFFFE0000001E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"272271\n"); + end + ReadData1E = 64'hB3FFFFB800000000; + ReadData2E = 64'hC3FFF000FFFFFFFF; + ReadData3E = 64'hC3E0007FFFFFBFFF; + ans = 64'hC3E0007FFFFFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"273272\n"); + end + ReadData1E = 64'h3FDFFDFBFFFFFFFF; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'hFFF0000000000000; ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 @@ -38902,12 +10743,168 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"304775\n"); + $fwrite(fp,"274273\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'hC80E000000000200; + ReadData3E = 64'h480800000000000F; + ans = 64'h480800000000000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"275274\n"); + end + ReadData1E = 64'hC1F003F800000000; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h5BCF1238F86DA63E; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"276275\n"); + end + ReadData1E = 64'h000FFFFFFFFFFFFE; + ReadData2E = 64'h40000001007FFFFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"277276\n"); + end + ReadData1E = 64'h3FE0040000000000; + ReadData2E = 64'hAB7000FFFFFFFF80; + ReadData3E = 64'h40096C06B5F5A63B; + ans = 64'h40096C06B5F5A63B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"278277\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'hC1E0020000000200; - ans = 64'hC1E0020000000200; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -38941,12 +10938,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"305081\n"); + $fwrite(fp,"279278\n"); end - ReadData1E = 64'h890BFFFFFFF80000; - ReadData2E = 64'h7FD0001000000002; - ReadData3E = 64'h4010000000000001; - ans = 64'hC8EC001BFFF7FFFB; + ReadData1E = 64'h3FD000000000801E; + ReadData2E = 64'h43F1CB8D91B996FA; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h43D1CB8D91BA2578; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -38980,12 +10977,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"305387\n"); + $fwrite(fp,"280279\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h43FFFFFFFFFFC01E; + ans = 64'h43FFFFFFFFFFC01E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -39019,7 +11016,904 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"305693\n"); + $fwrite(fp,"281280\n"); + end + ReadData1E = 64'hC010040FFFFFFFFF; + ReadData2E = 64'h3B05C0BC8487C491; + ReadData3E = 64'hBFE25B5CB0F663D4; + ans = 64'hBFE25B5CB0F663D4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"282281\n"); + end + ReadData1E = 64'h408FFFFFFDFFFFE0; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"283282\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'hBAA41F6DD9742842; + ReadData3E = 64'h2E000800000007FF; + ans = 64'h2E000800000007FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"284283\n"); + end + ReadData1E = 64'hE43FFFE0000003FE; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h3DE3FFFFF8000000; + ans = 64'h3DE3FFFFF8000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"285284\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'hC03FFFFFFFFFFFD0; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"286285\n"); + end + ReadData1E = 64'h3F103FFFFFFFFFEF; + ReadData2E = 64'h3F8FFC00003FFFFF; + ReadData3E = 64'h43E0003FEFFFFFFE; + ans = 64'h43E0003FEFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"287286\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"288287\n"); + end + ReadData1E = 64'h403DFFFFFFFFEFFF; + ReadData2E = 64'h3FCFEFFFFFFFFC00; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"289288\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'hC010000000000000; + ans = 64'hC010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"290289\n"); + end + ReadData1E = 64'h43C5FF971D8D4F14; + ReadData2E = 64'h380FFFFFFBFFF000; + ReadData3E = 64'hB81FFF001FFFFFFE; + ans = 64'h3BE5FF971ACD5131; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"291290\n"); + end + ReadData1E = 64'h3F4000080000007F; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFDFFBFFFE000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"292291\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'h80006DA0DB1EC469; + ReadData3E = 64'h40402FFFFFFFFFFF; + ans = 64'h40402FFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"293292\n"); + end + ReadData1E = 64'hB7FFFFFF7FFFF7FF; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hC010000000004007; + ans = 64'hC010000000004007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"294293\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'hBCCBFFFFFFF7FFFE; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"295294\n"); + end + ReadData1E = 64'h802020000000000E; + ReadData2E = 64'hC07F1DC94CC8010E; + ReadData3E = 64'h412955A64675FF27; + ans = 64'h412955A64675FF27; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"296295\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"297296\n"); + end + ReadData1E = 64'hBFA2410CF215BE5E; + ReadData2E = 64'h41E000007FFFF7FF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hC192410D7C1E1CCD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"298297\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'hC7A0040000001FFF; + ans = 64'hC7A0040000001FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"299298\n"); + end + ReadData1E = 64'hC02FFFEFFFFC0000; + ReadData2E = 64'h3FF00000000EFFFF; + ReadData3E = 64'h3FAFFFEFFFFFFFEF; + ans = 64'hC02FDFF01019FFEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"300299\n"); + end + ReadData1E = 64'hC00F840000000000; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h0010000000000000; + ans = 64'hC02F840000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"301300\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'hE31000008FFFFFFE; + ReadData3E = 64'h3FF0000000000FFE; + ans = 64'h3FF0000000000FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"302301\n"); + end + ReadData1E = 64'h402FFFFFFBF00000; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hCF42000FFFFFFFFF; + ans = 64'hCF42000FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"303302\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'h3FFFFFFFFFFFFDFE; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"304303\n"); end ReadData1E = 64'h4080000007FFFEFE; ReadData2E = 64'hC80FE00000000004; @@ -39058,12 +11952,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"305999\n"); + $fwrite(fp,"305304\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hB53FFFFFFFF7BFFE; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -39099,10 +11993,10 @@ initial if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); $fwrite(fp,"306305\n"); end - ReadData1E = 64'hC1BBFFFFFFFFF800; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'hC01200007FFFFFFE; - ans = 64'hC50BFFFFFFFFF802; + ReadData1E = 64'h3FFFFFFFFEFFDFFF; + ReadData2E = 64'hC34FFFF0000000FF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC35FFFEFFEFFE17E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -39136,207 +12030,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"306611\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC0E8639CEABADD60; - ReadData3E = 64'h407FFFFFF000000E; - ans = 64'h407FFFFFF000000E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"306917\n"); - end - ReadData1E = 64'h403E9B00B0A9304B; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'hBFD0000000000000; - ans = 64'h439E9B00B0A9304A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"307223\n"); - end - ReadData1E = 64'h480FFFFDFFF80000; - ReadData2E = 64'h3F41BFFFFFFFFFFF; - ReadData3E = 64'hC1C000000000FFEF; - ans = 64'h4761BFFEE3FB8FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"307529\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'h3CE80001FFFFFFFE; - ans = 64'h3CE80001FFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"307835\n"); - end - ReadData1E = 64'h7FD0002FFFFFFFFF; - ReadData2E = 64'hB8700000800FFFFF; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hF85000308011802E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"308141\n"); + $fwrite(fp,"307306\n"); end ReadData1E = 64'h0010000000000000; ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'h4004000000000000; + ReadData3E = 64'hEC70007FFF7FFFFF; + ans = 64'hEC70007FFF7FFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -39370,12 +12069,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"308447\n"); + $fwrite(fp,"308307\n"); end - ReadData1E = 64'h3FEFFFFFFFFFF807; - ReadData2E = 64'h403000FFFFFFFFFD; - ReadData3E = 64'h8000000000FFFFFB; - ans = 64'h403000FFFFFFFC00; + ReadData1E = 64'h37FE000040000000; + ReadData2E = 64'hE91007FFFFFFFDFF; + ReadData3E = 64'hC3CFFFFC000007FF; + ans = 64'hE11E0F00401FFC3E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -39409,363 +12108,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"308753\n"); + $fwrite(fp,"309308\n"); end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC00BC838B3BBB5A9; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"309059\n"); - end - ReadData1E = 64'hBFA007FFFFFFFBFF; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'h3FB00000000201FF; - ans = 64'hFF9007FFFFFFFC00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"309365\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h48B5B44331874F02; - ReadData3E = 64'h41CFFE00FFFFFFFF; - ans = 64'h41CFFE00FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"309671\n"); - end - ReadData1E = 64'h000FFFFFFFFFDFBE; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'h3CA0000000000001; - ans = 64'h400FFFFFFFFFBF7B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"309977\n"); - end - ReadData1E = 64'h41CF7FFFFFFFFFF0; - ReadData2E = 64'h7FEFFDFFFEFFFFFE; - ReadData3E = 64'h3FE96EA68E3FBB6C; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"310283\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'hBF801FFFFFFFFEFF; - ans = 64'h400FEFE000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"310589\n"); - end - ReadData1E = 64'h00201000007FFFFE; - ReadData2E = 64'h480CFFB7FE0DACA9; - ReadData3E = 64'h3FFFFFFFFFFFFFFE; - ans = 64'h3FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"310895\n"); - end - ReadData1E = 64'h0010000000000000; + ReadData1E = 64'hFFDF0000001FFFFF; ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'hBFD0000000000000; - ans = 64'h400DFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"311201\n"); - end - ReadData1E = 64'hCE44B2478F9C2274; - ReadData2E = 64'h434003FDFFFFFFFF; - ReadData3E = 64'hD79800000001FFFE; - ans = 64'hD79800000001FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"311507\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC004F9F07751D02C; ReadData3E = 64'h7FE0000000000000; - ans = 64'h7FE0000000000000; + ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -39799,51 +12147,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"311813\n"); - end - ReadData1E = 64'h2DB0041FFFFFFFFF; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'h3FE960A47AF95278; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"312119\n"); + $fwrite(fp,"310309\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h7FE00003FFFFFFF6; - ReadData3E = 64'h7FE0013FFFFFFFFE; - ans = 64'h7FE0013FFFFFFFFE; + ReadData2E = 64'hB7FFEFFFFFC00000; + ReadData3E = 64'h3F507B3B72CC499B; + ans = 64'h3F507B3B72CC499B; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -39877,11 +12186,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"312425\n"); + $fwrite(fp,"311310\n"); end - ReadData1E = 64'hBFFFFE0000003FFE; + ReadData1E = 64'h46EF5ED969F5ECFE; ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h3FCFFFFFF8080000; ans = 64'h7FF8000000000001; FrmE = 3'b000; #10 @@ -39916,441 +12225,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"312731\n"); - end - ReadData1E = 64'hC02FFFFFFFBFFFFF; - ReadData2E = 64'hB39FFFFFFFFFF808; - ReadData3E = 64'h43FFFFF000002000; - ans = 64'h43FFFFF000002000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"313037\n"); + $fwrite(fp,"312311\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'hC03FBF7FFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"313343\n"); - end - ReadData1E = 64'h381FFFEEFFFFFFFF; - ReadData2E = 64'hB7EFF80000008000; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"313649\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'h3CA0000000000001; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"313955\n"); - end - ReadData1E = 64'h3FD000003FFFFE00; - ReadData2E = 64'h4BC000007FFFC000; - ReadData3E = 64'hBFDFAA56060806BE; - ans = 64'h4BA00000BFFFC000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"314261\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hFFEFFFFFFFEFFFFC; - ReadData3E = 64'hC340000000000001; - ans = 64'hC340000000000003; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"314567\n"); - end - ReadData1E = 64'hC0307FEFFFFFFFFF; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'hBDD00000080FFFFF; - ans = 64'hBDD00000080FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"314873\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC3FFFC0000FFFFFE; - ReadData3E = 64'hBFCFFFFEFFEFFFFE; - ans = 64'hBFCFFFFEFFEFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"315179\n"); - end - ReadData1E = 64'h40C34F729EDBEC45; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'h000FFFFFFFFFD95F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"315485\n"); - end - ReadData1E = 64'hC03FFFEFFFFFFFDE; - ReadData2E = 64'h8010800000004000; - ReadData3E = 64'h41CC0000000003FF; - ans = 64'h41CC0000000003FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"315791\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'h43FFFFFFEEFFFFFF; - ans = 64'h43FFFFFFEEFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"316097\n"); - end - ReadData1E = 64'h41C00020000000FF; - ReadData2E = 64'hC07A332FE70D0382; + ReadData2E = 64'h2B700001001FFFFF; ReadData3E = 64'h3FE0000000000001; - ans = 64'hC24A33644D6C933E; + ans = 64'h3FE0000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -40384,12 +12264,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"316403\n"); + $fwrite(fp,"313312\n"); + end + ReadData1E = 64'h41FFF8FFFFFFFFFE; + ReadData2E = 64'h461FFFFFFFFFF000; + ReadData3E = 64'h3F70400000000006; + ans = 64'h482FF8FFFFFFF002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"314313\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -40423,2038 +12342,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"316709\n"); + $fwrite(fp,"315314\n"); end - ReadData1E = 64'h3D6FFFFE000FFFFE; - ReadData2E = 64'hC03000407FFFFFFF; - ReadData3E = 64'h402FFFFFF80001FE; - ans = 64'h402FFFFFF7FFE1FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"317015\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h41D524236A0D87CB; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'h401FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"317321\n"); - end - ReadData1E = 64'h41C807C515B87415; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'hCD0080000001FFFF; - ans = 64'hCD0080000001FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"317627\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h3F4400000000001E; - ReadData3E = 64'hC1DFFFFFFFFBFFFA; - ans = 64'hC1DFFFFFFFFBFFFA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"317933\n"); - end - ReadData1E = 64'h41CFF80000000007; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'h8000000000000000; - ans = 64'h81EFF80000000007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"318239\n"); - end - ReadData1E = 64'hC03003FFF7FFFFFE; - ReadData2E = 64'hC80F8FFFFFFFFFFF; - ReadData3E = 64'h3FBDFFFFFF800000; - ans = 64'h484F97E3F037FFFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"318545\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'h38E0000FFFFFFF80; - ans = 64'h38E0000FFFFFFF80; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"318851\n"); - end - ReadData1E = 64'hBFCFFFFFFC000008; - ReadData2E = 64'h1ACFFFFFFF800010; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hBFDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"319157\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'h000FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"319463\n"); - end - ReadData1E = 64'hBFC195D722242CFC; - ReadData2E = 64'h43FA8BAAFEAC312F; - ReadData3E = 64'h7FF44DE4CC2EAF61; - ans = 64'h7FFC4DE4CC2EAF61; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"319769\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hFFF000000003FFFB; - ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'hFFF800000003FFFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"320075\n"); - end - ReadData1E = 64'h43F00000007FFFFE; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'hBFBFFFF7FFEFFFFF; - ans = 64'hBFBFFFF7FFEFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"320381\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h41EBFFFFFC000000; - ReadData3E = 64'h41403FEFFFFFFFFE; - ans = 64'h41403FEFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"320687\n"); - end - ReadData1E = 64'h381FF7FFFFFFFFDF; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"320993\n"); - end - ReadData1E = 64'h300EFFFFFFFFFFDE; - ReadData2E = 64'h41FFF7FFDFFFFFFF; - ReadData3E = 64'h404FFFFFFF9FFFFF; - ans = 64'h404FFFFFFF9FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"321299\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'h43B00000007FFFF8; - ans = 64'h43B00000007FFFF8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"321605\n"); - end - ReadData1E = 64'h31C003FFFFFBFFFE; - ReadData2E = 64'h3FB929CE7C20406E; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h3CAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"321911\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'h8000000000000000; - ans = 64'h8000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"322217\n"); - end - ReadData1E = 64'hB7F0000000000FFC; - ReadData2E = 64'hC3EEE26ECB4D48FA; - ReadData3E = 64'h41E01FFFFF7FFFFE; - ans = 64'h41E01FFFFF7FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"322523\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h5E3FB1EF5708D61C; - ReadData3E = 64'h4000000000000000; - ans = 64'h4000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"322829\n"); - end - ReadData1E = 64'hC09000003FFFBFFF; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'hC02FFFFFFFFE01FF; - ans = 64'hC02FFFFFFFFE017F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"323135\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h20BDA441CA99D67B; - ReadData3E = 64'h3FFFFFFFFFFFFFFD; - ans = 64'h3FFFFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"323441\n"); - end - ReadData1E = 64'h41C00001FE000000; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"323747\n"); - end - ReadData1E = 64'hC02FFF0000000003; - ReadData2E = 64'hD7F000000000007A; - ReadData3E = 64'h316B40A4972E3E8C; - ans = 64'h582FFF00000000F7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"324053\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'hC00FFFFC00001FFF; - ans = 64'hC00FFFFC00001FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"324359\n"); - end - ReadData1E = 64'h401007FFDFFFFFFE; - ReadData2E = 64'h41EFFFFFFFFFFF7E; - ReadData3E = 64'hBCA0000000000000; - ans = 64'h421007FFDFFFFFBD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"324665\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"324971\n"); - end - ReadData1E = 64'hB81F775CD1DFBCE5; - ReadData2E = 64'hC5AFFFFFFFEFFFFE; - ReadData3E = 64'h41DFFFFFF00FFFFE; - ans = 64'h41DFFFFFF00FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"325277\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBFE72B4771A92771; - ReadData3E = 64'hBFF0000000000001; - ans = 64'hBFF0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"325583\n"); - end - ReadData1E = 64'h43EFFFFFC00007FE; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'hC34F000003FFFFFF; - ans = 64'hC3E007BFE00103FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"325889\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC0DFF000003FFFFF; - ReadData3E = 64'hA751FFFFFFFFFF7E; - ans = 64'hA751FFFFFFFFFF7E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"326195\n"); - end - ReadData1E = 64'h3F243DDDF2B81DCE; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'hC34FFFFFFFFFFFFE; - ans = 64'hC34FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"326501\n"); - end - ReadData1E = 64'hBD86FC7AA6E86ECB; - ReadData2E = 64'hC3007FFFFFFFFFFF; - ReadData3E = 64'hBFF00101FFFFFFFF; - ans = 64'h4097B05E3B9FB240; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"326807\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'h401FFFF800FFFFFF; - ans = 64'h401FFFF800FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"327113\n"); - end - ReadData1E = 64'h40F0020000000007; - ReadData2E = 64'hBA10000003FFF000; - ReadData3E = 64'h0010000000000001; - ans = 64'hBB10020004007005; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"327419\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"327725\n"); - end - ReadData1E = 64'hFFD0023FFFFFFFFF; - ReadData2E = 64'hB80FFFFE000000FE; - ReadData3E = 64'hBFF0000002080000; - ans = 64'h77F0023EFFDC007E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"328031\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h402FF0000001FFFF; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h3FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"328337\n"); - end - ReadData1E = 64'h001EFFFFFFFFFFFA; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'h41EFFFFFFFFF7FFA; - ans = 64'h41EFFFFFFFFF7FFA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"328643\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h400FFFBFFFFFFFFE; - ReadData3E = 64'hBFEF000000000006; - ans = 64'hBFEF000000000006; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"328949\n"); - end - ReadData1E = 64'h2CA00001DFFFFFFE; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'h4340000000000000; - ans = 64'h4340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"329255\n"); - end - ReadData1E = 64'h3FBFFFFC03FFFFFE; - ReadData2E = 64'h41D2003FFFFFFFFF; - ReadData3E = 64'hB81FFF7FBFFFFFFF; - ans = 64'h41A2003DC23807FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"329561\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'hBFC8D4B898AE6753; - ans = 64'hBFC8D4B898AE6753; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"329867\n"); - end - ReadData1E = 64'h37F0811ECCA520CC; - ReadData2E = 64'hB5EC0F0DCEE7205D; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'hADECF17D3156B094; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"330173\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'hC34FFFFFFFFFFFFE; - ans = 64'hC34FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"330479\n"); - end - ReadData1E = 64'h47E800000003FFFF; - ReadData2E = 64'h002D21C92796619C; - ReadData3E = 64'h8020000000000000; - ans = 64'h0825D956DDB46D6D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"330785\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h380FFFFFFFFFFFFF; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFDFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"331091\n"); - end - ReadData1E = 64'h0010000000010002; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'hBFC00000003FEFFF; - ans = 64'hBFC00000003FEFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"331397\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC7F3FFFFFF000000; - ReadData3E = 64'hC1AFFFFFFF7DFFFF; - ans = 64'hC1AFFFFFFF7DFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"331703\n"); - end - ReadData1E = 64'hC8BFFFFFFFFBFDFE; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'hC010000000000001; - ans = 64'h48BFFFFFFFFBFE00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"332009\n"); - end - ReadData1E = 64'hBE6F80000000007F; - ReadData2E = 64'h3E8B72F2BC14CB1E; - ReadData3E = 64'hC230976CFE95CEB9; - ans = 64'hC230976CFE95CEB9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"332315\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'hC44FFFFF7FFFFF80; - ans = 64'hC44FFFFF7FFFFF80; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"332621\n"); - end - ReadData1E = 64'hC1F01FFFFFFF0000; - ReadData2E = 64'hF298EF2E7DB85567; + ReadData1E = 64'hC00FFEFFFFFF7FFF; + ReadData2E = 64'h002FF000000001FF; ReadData3E = 64'hFFFFFFFFFFFFFFFE; ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; @@ -42490,12 +12381,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"332927\n"); + $fwrite(fp,"316315\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'h4340000000000000; - ans = 64'h4340000000000000; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h4030200000001FFF; + ans = 64'h4030200000001FFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -42529,12 +12420,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"333233\n"); + $fwrite(fp,"317316\n"); end - ReadData1E = 64'hBF5FD227B86CA879; - ReadData2E = 64'h40200000003FFFFC; - ReadData3E = 64'hD9BFFFFC1FFFFFFF; - ans = 64'hD9BFFFFC1FFFFFFF; + ReadData1E = 64'h002200000000FFFE; + ReadData2E = 64'h002FFFFFF7FFFFDE; + ReadData3E = 64'h802CFB1B2EBACE7C; + ans = 64'h802CFB1B2EBACE7C; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -42568,12 +12459,363 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"333539\n"); + $fwrite(fp,"318317\n"); + end + ReadData1E = 64'h3FDF800010000000; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"319318\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h403D53A968AE85F4; + ReadData2E = 64'h7FEC2F806366F957; + ReadData3E = 64'hBEB0003FF7FFFFFF; + ans = 64'h400C2F7FE364F997; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"320319\n"); + end + ReadData1E = 64'hC3D3E90EDA31655A; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h3FBFFEFFFFFEFFFF; + ans = 64'h4083EA0ED2316553; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"321320\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'hC00FFBFFDFFFFFFF; + ReadData3E = 64'h8010000000000001; + ans = 64'h8033FDFFF0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"322321\n"); + end + ReadData1E = 64'h43F0FFFE00000000; + ReadData2E = 64'hBED000000000000D; + ReadData3E = 64'h2F0000004000001F; + ans = 64'hC2D0FFFE0000000E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"323322\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h001BFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"324323\n"); + end + ReadData1E = 64'h8B607FFFFFFFFFFF; + ReadData2E = 64'h234EFFFFFFFFFE00; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"325324\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h37E1FFFFFFFFFF7E; + ans = 64'h37E1FFFFFFFFFF7E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"326325\n"); + end + ReadData1E = 64'hBFFEFFFFFFFFFF80; + ReadData2E = 64'h3491B0F3E676A8DD; + ReadData3E = 64'h3F8FF7FFFFFFEFFF; + ans = 64'h3F8FF7FFFFFFEFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"327326\n"); + end + ReadData1E = 64'h41D87D0676A3CE52; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; ReadData3E = 64'h3FD0000000000000; - ans = 64'h3FD0000000000000; + ans = 64'hC1D87D067693CE51; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -42607,51 +12849,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"333845\n"); - end - ReadData1E = 64'h401FFFFDC0000000; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'hCF8F800007FFFFFF; - ans = 64'hCF8F800007FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"334151\n"); + $fwrite(fp,"328327\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC1D0803FFFFFFFFF; - ReadData3E = 64'h41D9081CD2377743; - ans = 64'h41D9081CD2377743; + ReadData2E = 64'hBCA003FFFFFFFFF7; + ReadData3E = 64'hBF800000007FFF7E; + ans = 64'hBF800000007FFF7E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -42685,12 +12888,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"334457\n"); + $fwrite(fp,"329328\n"); end - ReadData1E = 64'h78001E0C150FC0CA; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'hF8101E0C150FC0CB; + ReadData1E = 64'h37FC000000000FFF; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'h2BE0007FFFFFFEFF; + ans = 64'hB7FC000000000FFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -42724,439 +12927,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"334763\n"); - end - ReadData1E = 64'hC1E0000FFFFFFEFF; - ReadData2E = 64'hBFF20000000003FF; - ReadData3E = 64'h3CA2B9DBAAB26581; - ans = 64'h41E20012000002DE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"335069\n"); + $fwrite(fp,"330329\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'h65E05E479AF5AEB5; - ans = 64'h65E05E479AF5AEB5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"335375\n"); - end - ReadData1E = 64'hC1F00000000400FF; - ReadData2E = 64'h400F51AB9CFD5497; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"335681\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'hC010000000000001; - ans = 64'hC010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"335987\n"); - end - ReadData1E = 64'h3ECFFC0000000010; - ReadData2E = 64'hC0FFFFF8000FFFFF; - ReadData3E = 64'hBFCFFF7FFFFBFFFF; - ans = 64'hBFE7FDDC0086FF07; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"336293\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC0000001000001FE; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBCA0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"336599\n"); - end - ReadData1E = 64'h37EFFFFC00000004; - ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'hC1CFFFFFBF800000; - ans = 64'hC1CFFFFFBF800000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"336905\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC5C679594BB014C1; - ReadData3E = 64'h3380000203FFFFFF; - ans = 64'h3380000203FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"337211\n"); - end - ReadData1E = 64'h403585434B1B77D6; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hC05605434B1B77D6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"337517\n"); - end - ReadData1E = 64'hBE3FFFFFFFFFE07F; - ReadData2E = 64'h3F9FFFFFFFF87FFF; - ReadData3E = 64'h3EA000000003FFBF; - ans = 64'h3E9FFC0000080072; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"337823\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC010000000000001; - ReadData3E = 64'hC07238B056832559; - ans = 64'hC07238B056832559; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"338129\n"); - end - ReadData1E = 64'hC7FF635B2DA8AC6C; - ReadData2E = 64'hBF300001FFFE0000; + ReadData2E = 64'h41A000000001FFFF; ReadData3E = 64'hFFE0000000000001; ans = 64'hFFE0000000000001; FrmE = 3'b000; @@ -43192,12 +12966,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"338435\n"); + $fwrite(fp,"331330\n"); + end + ReadData1E = 64'h44C9E97C698DC227; + ReadData2E = 64'h800F61D94CEEB869; + ReadData3E = 64'h43F1B81EDDDE9E2C; + ans = 64'h43F1B81EDDDE9E2C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"332331\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -43231,12 +13044,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"338741\n"); + $fwrite(fp,"333332\n"); end - ReadData1E = 64'h8004E9A86C24788F; - ReadData2E = 64'h40100000FFFFFC00; - ReadData3E = 64'h41BFDF7FFFFFFFFF; - ans = 64'h41BFDF7FFFFFFFFF; + ReadData1E = 64'h0014000000FFFFFF; + ReadData2E = 64'hB7EFFFFF7FFFF800; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -43270,12 +13083,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"339047\n"); + $fwrite(fp,"334333\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBF3FFF00000FFFFE; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'h001FFE000FFFFEFF; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000004080; + ans = 64'h7FE0000000004080; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -43309,12 +13122,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"339353\n"); + $fwrite(fp,"335334\n"); end - ReadData1E = 64'hB63FFFFFFFFFFDFF; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'hA5BE0000000003FF; - ans = 64'h366FFFFFFFFFFDFD; + ReadData1E = 64'hBFEFFFFBFFFDFFFE; + ReadData2E = 64'hC7E2D8B92BDA6DAD; + ReadData3E = 64'h37F000000040007E; + ans = 64'h47E2D8B6D0C21AA5; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -43348,12 +13161,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"339659\n"); + $fwrite(fp,"336335\n"); + end + ReadData1E = 64'h770DFFFFFFFFFF00; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h8000000000000000; + ans = 64'hF72DFFFFFFFFFF02; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"337336\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hB9F000000007FFFA; - ReadData3E = 64'hC8061A6CA9E4273A; - ans = 64'hC8061A6CA9E4273A; + ReadData2E = 64'h47E0000400003FFE; + ReadData3E = 64'hC3C1EFFFFFFFFFFF; + ans = 64'hC3C1EFFFFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -43387,12 +13239,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"339965\n"); + $fwrite(fp,"338337\n"); end - ReadData1E = 64'h7FF0010000000200; + ReadData1E = 64'hB7E5A599EB66A2A6; ReadData2E = 64'hC340000000000000; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h7FF8010000000200; + ReadData3E = 64'h39BFC4AD0D72CB1C; + ans = 64'h3B35A59A0B2B4FB3; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -43426,51 +13278,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"340271\n"); - end - ReadData1E = 64'hC140400000000007; - ReadData2E = 64'hC747571F3869690F; - ReadData3E = 64'h43400003FFF7FFFF; - ans = 64'h4897B47BB54B0EBD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"340577\n"); + $fwrite(fp,"339338\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'hC2BFBFFEFFFFFFFF; - ans = 64'hC2BFBFFEFFFFFFFF; + ReadData2E = 64'hB7E3FFFFFFFFFFF7; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -43504,12 +13317,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"340883\n"); + $fwrite(fp,"340339\n"); end - ReadData1E = 64'hBFFFFFFFC00003FF; - ReadData2E = 64'hC01274DD0FBADA9C; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'h4350000000000002; + ReadData1E = 64'hC710080000002000; + ReadData2E = 64'hC3D268CE38BFBD9B; + ReadData3E = 64'h3FC000100000001E; + ans = 64'h4AF272029FDC424B; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -43543,206 +13356,167 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"341189\n"); + $fwrite(fp,"341340\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hBFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"341495\n"); - end - ReadData1E = 64'h380F001FFFFFFFFF; - ReadData2E = 64'hAC0FDFFFFC000000; - ReadData3E = 64'hBFC0000000004007; - ans = 64'hBFC0000000004007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"341801\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC0A000103FFFFFFE; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'h80C002103FFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"342107\n"); - end - ReadData1E = 64'hB59FC00000000003; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'hB80FFFFFFFFFFFDA; - ans = 64'h38FFBFC000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"342413\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBCC3CFBD727D2506; - ReadData3E = 64'hC1C0100000001FFF; - ans = 64'hC1C0100000001FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"342719\n"); - end - ReadData1E = 64'hFFEE000080000000; ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'hBFE0000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"342341\n"); + end + ReadData1E = 64'h40603FFFFF7FFFFE; + ReadData2E = 64'h41CFFFFFFBFFF7FE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h42403FFFFD77FBED; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"343342\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'hD44DFFFFBFFFFFFF; + ans = 64'hD44DFFFFBFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"344343\n"); + end + ReadData1E = 64'hBFE01FFFFFDFFFFE; + ReadData2E = 64'h3BA1FFFFFFFFFFFC; + ReadData3E = 64'h4055A9474F1188A0; + ans = 64'h4055A9474F1188A0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"345344\n"); + end + ReadData1E = 64'hB7F400000FFFFFFE; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hC340000000000000; ans = 64'h7FF0000000000000; FrmE = 3'b000; #10 @@ -43777,51 +13551,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"343025\n"); - end - ReadData1E = 64'h39EFFFF000000040; - ReadData2E = 64'hBFA0000000020FFF; - ReadData3E = 64'hBD117042903CB8AA; - ans = 64'hBD117042903CB8AA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"343331\n"); + $fwrite(fp,"346345\n"); end ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'h42800000017FFFFF; - ans = 64'h42800000017FEFFF; + ReadData2E = 64'h3FCFFFFFFFFFC800; + ReadData3E = 64'hA60FFFFFFF7FFC00; + ans = 64'hA60FFFFFFF7FFC00; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -43855,674 +13590,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"343637\n"); + $fwrite(fp,"347346\n"); end - ReadData1E = 64'hB9BFFFFFE0004000; - ReadData2E = 64'hBF90200000000007; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'hC01FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"343943\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'h3FF0000000000000; - ans = 64'hBFF0000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"344249\n"); - end - ReadData1E = 64'h3FF00080003FFFFF; - ReadData2E = 64'h43EFFFFF7FFFFDFF; - ReadData3E = 64'hBFFFFFFF7F7FFFFF; - ans = 64'h43F0007FC03DFEFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"344555\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC1CFFFFFFFC0FFFE; - ReadData3E = 64'h0000000000000000; - ans = 64'h81EFFFFFFFC0FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"344861\n"); - end - ReadData1E = 64'hB02FFBFFFEFFFFFF; - ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'h2F20000000100000; - ans = 64'h702FFBFFFEFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"345167\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hC1FFFFFFF8000010; - ReadData3E = 64'h0010000840000000; - ans = 64'h821FFFFFF7F00008; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"345473\n"); - end - ReadData1E = 64'h381007C000000000; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'hF81007BFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"345779\n"); - end - ReadData1E = 64'hBF562488B8D64371; - ReadData2E = 64'h92A0000017FFFFFF; - ReadData3E = 64'h39EFDFFFFFFFDFFE; - ans = 64'h39EFDFFFFFFFDFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"346085\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'h403E715430E93B27; - ans = 64'h403A715430E93B27; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"346391\n"); - end - ReadData1E = 64'h3A90000000BFFFFF; - ReadData2E = 64'hC1D671BF3B5F1C48; - ReadData3E = 64'h4010000000000000; - ans = 64'h4010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"346697\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'hBFE0000000000001; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"347003\n"); - end - ReadData1E = 64'hB7DFFFFFFFFFFE00; - ReadData2E = 64'h3F907FFFFFFFF7FE; - ReadData3E = 64'hBF93C0A23CC11A26; - ans = 64'hBF93C0A23CC11A26; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"347309\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'h7FF00017FFFFFFFF; - ReadData3E = 64'h7FF0000000000001; - ans = 64'h7FF80017FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"347615\n"); - end - ReadData1E = 64'h3FC0000000050000; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'h4025438262DA06B0; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"347921\n"); - end - ReadData1E = 64'h0010000000000000; - ReadData2E = 64'hBD9100000000003F; - ReadData3E = 64'hC01FFFFE003FFFFF; - ans = 64'hC01FFFFE003FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"348227\n"); - end - ReadData1E = 64'hBFD00001FFFFFE00; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"348533\n"); - end - ReadData1E = 64'h000FFFFFFFDFFEFF; - ReadData2E = 64'hBCA00003FFFFFFF0; - ReadData3E = 64'h41E207FFFFFFFFFF; - ans = 64'h41E207FFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"348839\n"); - end - ReadData1E = 64'h0010000000000000; + ReadData1E = 64'h5C10CDC39985FE13; ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'h3FC4726CAF9F0AC5; + ReadData3E = 64'hC0000000000006FF; ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; #10 @@ -44557,51 +13629,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"349145\n"); - end - ReadData1E = 64'hC1EC4292DAD85B10; - ReadData2E = 64'h0FD00007FFFEFFFE; - ReadData3E = 64'hC000000000000001; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"349451\n"); + $fwrite(fp,"348347\n"); end ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'hC02FFFFFFFFFFC08; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -44635,12 +13668,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"349757\n"); + $fwrite(fp,"349348\n"); end - ReadData1E = 64'hC510000000200007; - ReadData2E = 64'h37E8254245857C30; - ReadData3E = 64'h215001FFFFFFF7FE; - ans = 64'hBD08254245B5C6BF; + ReadData1E = 64'h3CAFFC0000000008; + ReadData2E = 64'h7FFCAE3D4A7AF457; + ReadData3E = 64'hC1F00001FFFDFFFF; + ans = 64'h7FFCAE3D4A7AF457; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -44674,285 +13707,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"350063\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"350369\n"); - end - ReadData1E = 64'hBFC000000FFFFFC0; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'h40CC6452234E22D5; - ans = 64'h40CC6452234E22D5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"350675\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h313FFFFF8000000E; - ReadData3E = 64'h4090400000008000; - ans = 64'h4090400000008000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"350981\n"); - end - ReadData1E = 64'h43F5973D6929059F; - ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h3CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"351287\n"); - end - ReadData1E = 64'hFA5618AB76807DB4; - ReadData2E = 64'hA9B684B73C005DA3; - ReadData3E = 64'h40CFFBFFFDFFFFFF; - ans = 64'h641F19345688708F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"351593\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'hBFD40007FFFFFFFF; - ans = 64'hBFD40007FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"351899\n"); - end - ReadData1E = 64'hBE50000000000401; - ReadData2E = 64'hC00FFFF03FFFFFFF; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h4000000007FFFC10; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"352205\n"); + $fwrite(fp,"350349\n"); end ReadData1E = 64'h0010000000000001; ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -44986,986 +13746,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"352511\n"); + $fwrite(fp,"351350\n"); end - ReadData1E = 64'hE0B100000000003F; - ReadData2E = 64'hC10F800000003FFE; - ReadData3E = 64'hBFDFFFFFFFFFDFFD; - ans = 64'h61D0BC000000223D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"352817\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3FEFFFFFFFFFC002; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'h434FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"353123\n"); - end - ReadData1E = 64'h417FFF7FFFFFFF00; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'h37FA53BB21817EC2; - ans = 64'h37FA53BB21817EC2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"353429\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3DC39B8B3CE1D868; - ReadData3E = 64'hC96FFFFFFBFFE000; - ans = 64'hC96FFFFFFBFFE000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"353735\n"); - end - ReadData1E = 64'h3FF00000007FFFF7; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'h8010000000000001; - ans = 64'h00000000007FFFF7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"354041\n"); - end - ReadData1E = 64'h400FFFFFFFEFF000; - ReadData2E = 64'hB7FFFFFFFFFFF040; - ReadData3E = 64'hC1EFFFFFFF01FFFF; - ans = 64'hC1EFFFFFFF01FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"354347\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'h312EFFFFFFFFFFFF; - ans = 64'h312EFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"354653\n"); - end - ReadData1E = 64'hC3F003FFFF7FFFFF; - ReadData2E = 64'hC1FBFFFFFFFEFFFF; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'h45FC06FFFF1EFFBD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"354959\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h3CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"355265\n"); - end - ReadData1E = 64'h4EA00000000007FE; - ReadData2E = 64'h43EE5D7578A9E4C9; - ReadData3E = 64'hC0108000000003FF; - ans = 64'h529E5D7578A9F3F4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"355571\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC00000DFFFFFFFFF; - ReadData3E = 64'hC340000000000000; - ans = 64'hC340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"355877\n"); - end - ReadData1E = 64'h400FFEDFFFFFFFFF; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'hC00FFFFFFBFFFBFE; - ans = 64'hC00FFFFFFBFFFBFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"356183\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hCF22DB34B40B610A; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"356489\n"); - end - ReadData1E = 64'h794CFFFFFFFFFFFE; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h75FD000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"356795\n"); - end - ReadData1E = 64'hBFDFFFFFF0001000; - ReadData2E = 64'h43CFFFC0003FFFFF; - ReadData3E = 64'hC7F31244A4CB68E0; - ans = 64'hC7F31244A4CB68E0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"357101\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'hC7E000200000003F; - ans = 64'hC7E000200000003F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"357407\n"); - end - ReadData1E = 64'hFBA7EF96594DB2B4; - ReadData2E = 64'hC37FFFFFFFFFEBFE; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h7F37EF96594DA3BD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"357713\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'h8010000000000001; - ans = 64'h8010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"358019\n"); - end - ReadData1E = 64'h4630000000FFFFFF; - ReadData2E = 64'h41E07FFFFFFFBFFF; - ReadData3E = 64'h3FBFFFAFFFFFFFFF; - ans = 64'h482080000107BFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"358325\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3ABFFFFC40000000; - ReadData3E = 64'h4010000000000001; - ans = 64'h4010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"358631\n"); - end - ReadData1E = 64'h436F7FFDFFFFFFFF; - ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'hC01020007FFFFFFF; - ans = 64'h40276FFDBFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"358937\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC1E0008000002000; - ReadData3E = 64'h7FD0000002200000; - ans = 64'h7FD0000002200000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"359243\n"); - end - ReadData1E = 64'hB7EFFFFFFFFFD000; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"359549\n"); - end - ReadData1E = 64'h3FF008003FFFFFFF; - ReadData2E = 64'hC00FFFF0007FFFFF; - ReadData3E = 64'h80DFFC0000000003; - ans = 64'hC01007F83C3FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"359855\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'hBFB46BA6BE17B26F; - ans = 64'hBFB46BA6BE17B26F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"360161\n"); - end - ReadData1E = 64'h42A2C1EA3B54D9AE; - ReadData2E = 64'h7FE00000007FFFE0; - ReadData3E = 64'hBFD0000000000001; + ReadData1E = 64'h3FAFFFFF7FFFFFFF; + ReadData2E = 64'h7FE00FFFFC000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; ans = 64'h7FF0000000000000; FrmE = 3'b000; #10 @@ -46000,12 +13785,285 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"360467\n"); + $fwrite(fp,"352351\n"); + end + ReadData1E = 64'h0010000000000001; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'hBF8FFFFFFFF000FF; + ans = 64'hBF8FFFFFFFF000FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"353352\n"); + end + ReadData1E = 64'h3F3FFFFF77FFFFFE; + ReadData2E = 64'hBD7FFDFFF0000000; + ReadData3E = 64'hC34FFDFFFFFFBFFE; + ans = 64'hC34FFDFFFFFFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"354353\n"); + end + ReadData1E = 64'h7FD0000000000401; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h7C80000000000401; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"355354\n"); + end + ReadData1E = 64'h0010000000000001; + ReadData2E = 64'hBFB00000008001FF; + ReadData3E = 64'hC3FFFFFFFF1FFFFF; + ans = 64'hC3FFFFFFFF1FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"356355\n"); + end + ReadData1E = 64'h5C2FE003FFFFFFFE; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h33E5D4BAA880D65A; + ans = 64'h58EFE003FFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"357356\n"); + end + ReadData1E = 64'h0010000000000001; + ReadData2E = 64'h43CF7FFFFFFFBFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h03EF7FFFFFFFC001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"358357\n"); + end + ReadData1E = 64'h4030000400000001; + ReadData2E = 64'hC1F002000001FFFF; + ReadData3E = 64'h7FF0000000010003; + ans = 64'h7FF8000000010003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"359358\n"); end ReadData1E = 64'h0010000000000001; ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h0017FFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h8007FFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -46039,12 +14097,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"360773\n"); + $fwrite(fp,"360359\n"); end - ReadData1E = 64'h40086C9CAE34D324; - ReadData2E = 64'hC00FFFBFFBFFFFFF; - ReadData3E = 64'hC020000001FFDFFF; - ans = 64'hC0343635E9F6E191; + ReadData1E = 64'hCA90000100000003; + ReadData2E = 64'hBFD03FFFFFFF8000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h4A70400103FF8003; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -46078,285 +14136,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"361079\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3E36E176EB8922BE; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hC00FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"361385\n"); - end - ReadData1E = 64'hC0600007FFFFBFFF; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'h3FB47FFFFFFFFFFE; - ans = 64'hC04FF5CFFFFF7FFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"361691\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC7CFFFFFF0000003; - ReadData3E = 64'hB7EFFFFFFFFF8800; - ans = 64'hB7EFFFFFFFFF8800; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"361997\n"); - end - ReadData1E = 64'hBCA0807FFFFFFFFF; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"362303\n"); - end - ReadData1E = 64'h4032001FFFFFFFFF; - ReadData2E = 64'hE0300040003FFFFE; - ReadData3E = 64'hC8664720EB83783B; - ans = 64'hE072006800C8007D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"362609\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'h3FF020003FFFFFFF; - ans = 64'h3FF020003FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"362915\n"); - end - ReadData1E = 64'h40700000000FFFFE; - ReadData2E = 64'h48028D94CD5609B6; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'h48828D94CD689748; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"363221\n"); + $fwrite(fp,"361360\n"); end ReadData1E = 64'h0010000000000001; ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hB99CD39524F8FA36; + ans = 64'hB99CD39524F8FA36; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -46390,12 +14175,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"363527\n"); + $fwrite(fp,"362361\n"); end - ReadData1E = 64'h41E932AE9C561D16; - ReadData2E = 64'hBFBE902517750DF2; - ReadData3E = 64'hC1FFFFFFFFFFFE02; - ans = 64'hC200C08827CB14EC; + ReadData1E = 64'h3FEFFFF7FFEFFFFF; + ReadData2E = 64'hC00066B83BFB3475; + ReadData3E = 64'h56300000007C0000; + ans = 64'h56300000007C0000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -46429,129 +14214,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"363833\n"); + $fwrite(fp,"363362\n"); end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3FFFF80080000000; - ReadData3E = 64'h3FFFFFFFFFFFFFFE; - ans = 64'h3FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"364139\n"); - end - ReadData1E = 64'h4180200000200000; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'h37E6BEA376F569FE; - ans = 64'h41802000001FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"364445\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h0012DB0FA04B1CAC; - ReadData3E = 64'h3D70000020004000; - ans = 64'h3D70000020004000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"364751\n"); - end - ReadData1E = 64'h41EFFFFFF800FFFE; + ReadData1E = 64'hBFA01000000003FF; ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBFA010000000040E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -46585,51 +14253,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"365057\n"); - end - ReadData1E = 64'hC7EFF00FFFFFFFFE; - ReadData2E = 64'hC1FFFFFFDFFFFBFF; - ReadData3E = 64'hBB9000400000007F; - ans = 64'h49FFF00FE00FEBFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"365363\n"); + $fwrite(fp,"364363\n"); end ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'h33501FFF7FFFFFFF; - ans = 64'h33501FFF7FFFFFFF; + ReadData2E = 64'hF7801FFFF7FFFFFF; + ReadData3E = 64'h41FC000000001FFF; + ans = 64'h41FC000000001FFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -46663,163 +14292,7 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"365669\n"); - end - ReadData1E = 64'hC1EFFE000000001E; - ReadData2E = 64'h402FFFFFFFFEF7FE; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'hC22FFDFFFFFEF82D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"365975\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"366281\n"); - end - ReadData1E = 64'hB930FFFFFFFFFBFF; - ReadData2E = 64'h4031FFFFFFFFFF80; - ReadData3E = 64'hBEBE982A1C07F2DE; - ans = 64'hBEBE982A1C07F2DE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"366587\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hB800000000002FFF; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"366893\n"); + $fwrite(fp,"365364\n"); end ReadData1E = 64'hC015FCF3430061EA; ReadData2E = 64'h3FFFFFFFFFFFFFFF; @@ -46858,1921 +14331,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"367199\n"); + $fwrite(fp,"366365\n"); end ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h4057FFC000000000; - ReadData3E = 64'h3B2000000000FFF7; - ans = 64'h3B2000000000FFF7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"367505\n"); - end - ReadData1E = 64'hFFEFF00000000200; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"367811\n"); - end - ReadData1E = 64'hBFBAE3CE9204B8B5; - ReadData2E = 64'h400FFFFE00000002; - ReadData3E = 64'h403FFFFFFFFFC800; - ans = 64'h403F9470CC70A8C2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"368117\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'hC1FFFFFCFFFFFFFE; - ans = 64'hC1FFFFFCFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"368423\n"); - end - ReadData1E = 64'h3C5FFDFFFFDFFFFE; - ReadData2E = 64'h0004DB2EE93B91E9; - ReadData3E = 64'h0010000000000000; - ans = 64'h0010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"368729\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"369035\n"); - end - ReadData1E = 64'hC1D0000000003FBF; - ReadData2E = 64'hBFE0000FFEFFFFFF; - ReadData3E = 64'h46927FFFFFFFFFFF; - ans = 64'h46927FFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"369341\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h41F0001FFFFFFFF0; - ReadData3E = 64'h3FE0000000000001; - ans = 64'h3FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"369647\n"); - end - ReadData1E = 64'h380FFFFFE0000100; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'hBFA0000200200000; - ans = 64'hBFA0000200200000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"369953\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC1D0008000001000; - ReadData3E = 64'hC050000000040006; - ans = 64'hC050000000040006; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"370259\n"); - end - ReadData1E = 64'hC3E0000000BFFFFE; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'hC400000000BFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"370565\n"); - end - ReadData1E = 64'hC3DFC84C1C3C21EC; - ReadData2E = 64'hB41FFFF001FFFFFF; - ReadData3E = 64'hC4DFFFFFFFFFFE20; - ans = 64'hC4DFFFFFFFFFFE20; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"370871\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'h24F0000000003FFD; - ans = 64'h24F0000000003FFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"371177\n"); - end - ReadData1E = 64'hBFD000FFFFEFFFFF; - ReadData2E = 64'hBFBFFFFFC0000400; - ReadData3E = 64'h8000000000000001; - ans = 64'h3FA000FFDFEE01FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"371483\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"371789\n"); - end - ReadData1E = 64'h3FC0008FFFFFFFFF; - ReadData2E = 64'hC3D000000FFFFFFC; - ReadData3E = 64'hC02FFEFFF8000000; - ans = 64'hC3A0009010008FFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"372095\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h1BDC6B59EFED4540; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hBFDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"372401\n"); - end - ReadData1E = 64'h4007F0F830234BBC; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'hC071FEFFFFFFFFFF; - ans = 64'hC0713F783E7EE5A1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"372707\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hCE60000800000003; - ReadData3E = 64'h3FD0000200000001; - ans = 64'h3FD0000200000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"373013\n"); - end - ReadData1E = 64'h45BFFFFBF8000000; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'hC010000000000000; - ans = 64'h45DFFFFBF8000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"373319\n"); - end - ReadData1E = 64'h52CFFFEFFFFFFBFE; - ReadData2E = 64'hC3DCF5E2283E4645; - ReadData3E = 64'h3FDFFFC004000000; - ans = 64'hD6BCF5D3AD4D2E85; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"373625\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'h417FFDFFFFFFFFE0; - ans = 64'h417FFDFFFFFFFFE0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"373931\n"); - end - ReadData1E = 64'h3FC1E79A840CE4A2; - ReadData2E = 64'hC0202000000007FE; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"374237\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'h401FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"374543\n"); - end - ReadData1E = 64'h43EFFFF9FFFFFFFF; - ReadData2E = 64'hBB91FFFFFFF7FFFE; - ReadData3E = 64'hBFF00000400000FF; - ans = 64'hBFF04800327FE0FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"374849\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hB8BFFFF80000FFFE; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h3CAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"375155\n"); - end - ReadData1E = 64'hB7F781B7D9BC6FE7; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'h29EA81D8C86B6006; - ans = 64'hBB4781B7D9BC6FE7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"375461\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBF252B3EDD51DAD4; - ReadData3E = 64'h3F4001FFFF7FFFFF; - ans = 64'h3F4001FFFF7FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"375767\n"); - end - ReadData1E = 64'hA980002200000000; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'h4000000000000001; - ans = 64'h4000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"376073\n"); - end - ReadData1E = 64'h43F2B50D2D1063E9; - ReadData2E = 64'h3F24B8494F924E33; - ReadData3E = 64'hC34FFD7FFFFFFFFF; - ans = 64'hC349EF0DEE440A1B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"376379\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'h37E7DAF9073C2293; - ans = 64'h37E7DAF9073C2293; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"376685\n"); - end - ReadData1E = 64'hFFE7E8F25A9B01D1; - ReadData2E = 64'h8EF00000000C0000; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"376991\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'hC010000000000000; - ans = 64'hC010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"377297\n"); - end - ReadData1E = 64'h000ABEC8547943F5; - ReadData2E = 64'hC34FF7FFFFFFEFFE; - ReadData3E = 64'h382001FFFF7FFFFF; - ans = 64'h382001FFFF7FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"377603\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h77C007F7FFFFFFFE; - ReadData3E = 64'hBCA0000000000000; - ans = 64'hBCA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"377909\n"); - end - ReadData1E = 64'h41E0001F7FFFFFFE; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'h41DFFFFEFFFFFFFF; - ans = 64'h4540001F7FFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"378215\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBFEF5FFFFFFFFFFF; - ReadData3E = 64'h3FC0000000003FFB; - ans = 64'h3FC0000000003FFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"378521\n"); - end - ReadData1E = 64'hC1CFF80000007FFF; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"378827\n"); - end - ReadData1E = 64'hFFE5E5EE64C01393; - ReadData2E = 64'hBFD00000000BFFFF; - ReadData3E = 64'h3FC0000100001FFF; - ans = 64'h7FC5E5EE64D08004; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"379133\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'h499FFF7FFFFFFFEF; - ans = 64'h499FFF7FFFFFFFEF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"379439\n"); - end - ReadData1E = 64'hBFF95C149819D013; - ReadData2E = 64'h3FEFFFFFFFE0000F; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"379745\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'h4000000000000001; - ans = 64'h4018000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"380051\n"); - end - ReadData1E = 64'h98FFFF00000001FF; - ReadData2E = 64'h76A000FBFFFFFFFF; - ReadData3E = 64'h3CA0000000400FFE; - ans = 64'hCFB0007BF82000FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"380357\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h43CF7FFFFFFFDFFE; - ReadData3E = 64'h0010000000000001; - ans = 64'h03EF7FFFFFFFE000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"380663\n"); - end - ReadData1E = 64'hBFEEFFFDFFFFFFFE; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'hC3DF3A8CBF006383; - ans = 64'hFFEEFFFDFFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"380969\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hF80FFFFFFFC00001; - ReadData3E = 64'hC8800000007FDFFE; - ans = 64'hC8800000007FDFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"381275\n"); - end - ReadData1E = 64'hFFEFFFF03FFFFFFF; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"381581\n"); - end - ReadData1E = 64'hBD848F6BEB745C8A; - ReadData2E = 64'hBFB82E20E6DA10F1; - ReadData3E = 64'h47E2000FFFFFFFFF; - ans = 64'h47E2000FFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"381887\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'hB430000000100080; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"382193\n"); - end - ReadData1E = 64'hBF8BF116CF9EB336; - ReadData2E = 64'hBFF000000200007F; + ReadData2E = 64'h8011FFFFFF800000; ReadData3E = 64'h4340000000000001; ans = 64'h4340000000000001; FrmE = 3'b000; @@ -48808,12 +14370,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"382499\n"); + $fwrite(fp,"367366\n"); + end + ReadData1E = 64'hC00FFFFFBFFFFBFF; + ReadData2E = 64'h406FFFFFFC00001F; + ReadData3E = 64'h355FFFFEFFFFFFF7; + ans = 64'hC08FFFFFBBFFFC26; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"368367\n"); end ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'h7FF8000000000001; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -48847,2038 +14448,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"382805\n"); + $fwrite(fp,"369368\n"); end - ReadData1E = 64'h002FFFFFFFFFF7FF; - ReadData2E = 64'h3FE6BFDF70E60FB1; - ReadData3E = 64'h41CFFE07FFFFFFFF; - ans = 64'h41CFFE07FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"383111\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h43403FFFFFFEFFFF; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'h03603FFFFFFF0000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"383417\n"); - end - ReadData1E = 64'h3800000800000003; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'h4020AE1F9ECA9031; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"383723\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBFCFB217BCF730CB; - ReadData3E = 64'hBF1FF7FFE0000000; - ans = 64'hBF1FF7FFE0000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"384029\n"); - end - ReadData1E = 64'h41786956587A01AC; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'hBFE0000000000000; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"384335\n"); - end - ReadData1E = 64'hC1EFFFFBFFFEFFFF; - ReadData2E = 64'hB80FFDFFFFFFF7FF; - ReadData3E = 64'h41EE329F77C38BD2; - ans = 64'h41EE329F77C38BD2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"384641\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'hC005A4CE9C323304; - ans = 64'hC005A4CE9C323304; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"384947\n"); - end - ReadData1E = 64'hC3DD085B6A950C5E; - ReadData2E = 64'h000800000000001F; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"385253\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'h3FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"385559\n"); - end - ReadData1E = 64'hA7571911431E5523; - ReadData2E = 64'hC3D000000010FFFF; - ReadData3E = 64'h3E0000000000021E; - ans = 64'h3E0000000000021E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"385865\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h43D0000800003FFE; - ReadData3E = 64'hFFFFFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"386171\n"); - end - ReadData1E = 64'h3FCFFBFBFFFFFFFE; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'hC1E000000000FFE0; - ans = 64'hC1E000000000FFE0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"386477\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3FCF800000000004; - ReadData3E = 64'hC3EFFFFFFFFFFD00; - ans = 64'hC3EFFFFFFFFFFD00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"386783\n"); - end - ReadData1E = 64'hBFF84430474AABF1; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h3FD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"387089\n"); - end - ReadData1E = 64'hBE9D7FFFFFFFFFFF; - ReadData2E = 64'hC030007FFFFBFFFF; - ReadData3E = 64'hC963F3DF40853CC4; - ans = 64'hC963F3DF40853CC4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"387395\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'hD7B00000000003FB; - ans = 64'hD7B00000000003FB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"387701\n"); - end - ReadData1E = 64'hC1C1000000000200; - ReadData2E = 64'hFFD000200007FFFE; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"388007\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'hBFE0000000000000; - ans = 64'hBFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"388313\n"); - end - ReadData1E = 64'h9E5FF00000004000; - ReadData2E = 64'h54E01FFFFFFFFDFF; - ReadData3E = 64'h00099A5422D8B766; - ans = 64'hB35017F000001E40; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"388619\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hCE80000018000000; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"388925\n"); - end - ReadData1E = 64'hB81FC0000000003F; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'h73FFFFFFBFFFFF80; - ans = 64'h73FFFFFFBFFFFF80; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"389231\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hFFD001FFFFFFFFF7; - ReadData3E = 64'h415C71AEA4B8E680; - ans = 64'h415C71AE64B0E680; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"389537\n"); - end - ReadData1E = 64'h47F8A277FB0CC05C; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'hBCAFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"389843\n"); - end - ReadData1E = 64'h3CA7C32F64B84C77; - ReadData2E = 64'h281FFFFEDFFFFFFF; - ReadData3E = 64'h2E3CF9805BD36589; - ans = 64'h2E3CF9805BD36589; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"390149\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'hC20001FFFF000000; - ans = 64'hC20001FFFF000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"390455\n"); - end - ReadData1E = 64'hC11FFF7FFFFEFFFF; - ReadData2E = 64'h43FC9E1AE158F437; - ReadData3E = 64'hC000000000000000; - ans = 64'hC52C9DA868EC89E1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"390761\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h3FD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"391067\n"); - end - ReadData1E = 64'hBFD04000007FFFFF; - ReadData2E = 64'hA8BFFFFFFFFF7FFA; - ReadData3E = 64'h401338B91A01C053; - ans = 64'h401338B91A01C053; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"391373\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC00FFFFFFFBFFFE0; - ReadData3E = 64'hFFE0000000000001; - ans = 64'hFFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"391679\n"); - end - ReadData1E = 64'hFFDFFFFFFEFFFEFF; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'hC7FFEFFFFFFFFBFF; - ans = 64'h7C8FFFFFFEFFFF01; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"391985\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3FE0000000000201; - ReadData3E = 64'hBFDA78ED1BAFDD0A; - ans = 64'hBFDA78ED1BAFDD0A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"392291\n"); - end - ReadData1E = 64'h401F000002000000; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'hBCDF000001FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"392597\n"); - end - ReadData1E = 64'hC1E00001FFFFFFBE; - ReadData2E = 64'h3FB0000400007FFF; - ReadData3E = 64'hC030000000000008; - ans = 64'hC1A000062000FFBD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"392903\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'h4DB0005FFFFFFFFF; - ans = 64'h4DB0005FFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"393209\n"); - end - ReadData1E = 64'h403FFFFFFFFB8000; - ReadData2E = 64'hC1D000101FFFFFFE; - ReadData3E = 64'h3FF0000000000001; - ans = 64'hC22000101FFBBFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"393515\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'hBCAFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"393821\n"); - end - ReadData1E = 64'hC07FF7FFFFF7FFFF; - ReadData2E = 64'h7FEFFFC000FFFFFF; - ReadData3E = 64'hBEA0400000000006; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"394127\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC012F769A2FB5162; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'h434FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"394433\n"); - end - ReadData1E = 64'hC1E000000000001D; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'hC1F3EE27F9A3D71F; - ans = 64'hC1F1EE27F9A3D71B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"394739\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h37EFFFF0FFFFFFFE; - ReadData3E = 64'hBBB00008FFFFFFFF; - ans = 64'hBBB00008FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"395045\n"); - end - ReadData1E = 64'h8002000000000000; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'h8010000000000000; - ans = 64'h800F800000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"395351\n"); - end - ReadData1E = 64'h408C252230659285; - ReadData2E = 64'h3FEFFFE000000001; - ReadData3E = 64'hFFEDFFFFFFFFFF7E; - ans = 64'hFFEDFFFFFFFFFF7E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"395657\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'h58CFE0007FFFFFFE; - ans = 64'h58CFE0007FFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"395963\n"); - end - ReadData1E = 64'h233FFFFFC0000080; - ReadData2E = 64'hC03100000001FFFF; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hBFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"396269\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'h0017FFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"396575\n"); - end - ReadData1E = 64'hC00F7FFFFFFF0000; - ReadData2E = 64'h41FFFFFFFFFE001F; - ReadData3E = 64'hC3CFFFFFFFFFEC00; - ans = 64'hC3D0000001F7F600; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"396881\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h8950000007DFFFFE; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'hC01FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"397187\n"); - end - ReadData1E = 64'h43C0400000003FFE; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'h001000003FFFFF7F; - ans = 64'hC3B0400000003FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"397493\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hB2659A07DA522AC2; - ReadData3E = 64'h4D2000FFBFFFFFFF; - ans = 64'h4D2000FFBFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"397799\n"); - end - ReadData1E = 64'h47EC1BAD2B3E6CDC; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'h0000000000000001; - ans = 64'hC7DC1BAD2B3E6CDE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"398105\n"); - end - ReadData1E = 64'h3FEFFFF7FFFFFFF6; - ReadData2E = 64'hB7FFFFFFFF0003FF; - ReadData3E = 64'h800FFFFFFFFFDDFE; - ans = 64'hB7FFFFF7FF000435; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"398411\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'hBFC000000000A000; - ans = 64'hBFC000000000A000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"398717\n"); - end - ReadData1E = 64'h002FF7BFFFFFFFFE; - ReadData2E = 64'h800B7AD760176442; + ReadData1E = 64'h3800000000001DFE; + ReadData2E = 64'hC053FBCE9FD147A7; ReadData3E = 64'h3FDFFFFFFFFFFFFE; ans = 64'h3FDFFFFFFFFFFFFE; FrmE = 3'b000; @@ -50914,12 +14487,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"399023\n"); + $fwrite(fp,"370369\n"); end ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'h8010000000000000; - ans = 64'h8020000000000000; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h402000807FFFFFFE; + ans = 64'h402000807FFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -50953,12 +14526,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"399329\n"); + $fwrite(fp,"371370\n"); end - ReadData1E = 64'h5D200010000001FF; - ReadData2E = 64'h381F000080000000; - ReadData3E = 64'h486FFFFFFFEFFF80; - ans = 64'h554F001F800083DE; + ReadData1E = 64'h4E2FFFFFFFFFFFFF; + ReadData2E = 64'h460FC00000000000; + ReadData3E = 64'hC009CD3B57000378; + ans = 64'h544FBFFFFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -50992,128 +14565,362 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"399635\n"); + $fwrite(fp,"372371\n"); + end + ReadData1E = 64'hBF5FFFBFFFFFFFFF; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"373372\n"); end ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h4034720DB721EB5E; + ReadData2E = 64'h801527C51EFACABD; + ReadData3E = 64'hC1AFFFFFFFFDFDFF; + ans = 64'hC1AFFFFFFFFDFDFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"374373\n"); + end + ReadData1E = 64'h37FFFFBFFFFFF800; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'hA980000FFFFBFFFF; + ans = 64'h3B4FFFBFFFFFF802; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"375374\n"); + end + ReadData1E = 64'h0010000000000001; + ReadData2E = 64'h3F93FFFFFC000000; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"376375\n"); + end + ReadData1E = 64'h37200001FFFFFFFD; + ReadData2E = 64'h3D400000001FEFFF; + ReadData3E = 64'h4AA0000000007FFF; + ans = 64'h4AA0000000007FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"377376\n"); + end + ReadData1E = 64'h0010000000000001; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"378377\n"); + end + ReadData1E = 64'hBBFFFFFFFFFF77FF; + ReadData2E = 64'hB7F003F800000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h340003F7FFFFBBEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"379378\n"); + end + ReadData1E = 64'h0010000000000001; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h3FE0FFFFFFFFFBFF; + ans = 64'h40121FFFFFFFFF80; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"380379\n"); + end + ReadData1E = 64'hC3FFFFFFFFFFE1FF; + ReadData2E = 64'hBFCBDFA4D7D951B6; + ReadData3E = 64'h002FFFFF0000007F; + ans = 64'h43DBDFA4D7D93793; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"381380\n"); + end + ReadData1E = 64'h437FF8000000000F; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; ReadData3E = 64'h4010000000000000; - ans = 64'h4010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"399941\n"); - end - ReadData1E = 64'h40000000801FFFFF; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'h41EC000000008000; - ans = 64'h41EBFFFFFFC07FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"400247\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h40E0020001000000; - ReadData3E = 64'h4016F0BC0E532E91; - ans = 64'h4016F0BC0E532E91; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"400553\n"); - end - ReadData1E = 64'hC24FFFFFBFFFBFFE; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; ans = 64'h7FFFFFFFFFFFFFFF; FrmE = 3'b000; #10 @@ -51148,51 +14955,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"400859\n"); - end - ReadData1E = 64'hC00816F876A3A39B; - ReadData2E = 64'h801FFFFFFF0007FF; - ReadData3E = 64'h3FCFFF0001FFFFFE; - ans = 64'h3FCFFF0001FFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"401165\n"); + $fwrite(fp,"382381\n"); end ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'hC5A0007DFFFFFFFE; - ans = 64'hC5A0007DFFFFFFFE; + ReadData2E = 64'hC3F0800000007FFF; + ReadData3E = 64'h3F63FE0000000000; + ans = 64'h3F63FE0000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -51226,12 +14994,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"401471\n"); + $fwrite(fp,"383382\n"); end - ReadData1E = 64'h3FFFFFFFBFEFFFFF; - ReadData2E = 64'hC0A52E0A869D4883; - ReadData3E = 64'hBFD0000000000000; - ans = 64'hC0B52E4A5C369C70; + ReadData1E = 64'hC3FFFBFF7FFFFFFF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h4057FFFF7FFFFFFF; + ans = 64'h4057FFFF7FFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -51265,322 +15033,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"401777\n"); + $fwrite(fp,"384383\n"); end ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'h0000000000000001; - ans = 64'h8020000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"402083\n"); - end - ReadData1E = 64'hA350000021FFFFFF; - ReadData2E = 64'hA66FF8000000000F; - ReadData3E = 64'hC3D0080000001000; - ans = 64'hC3D0080000001000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"402389\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hB7E0022000000000; - ReadData3E = 64'hC000000000000001; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"402695\n"); - end - ReadData1E = 64'h043FFFFBFFFFFFFF; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'h278F80000000003F; - ans = 64'h278F80000000003F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"403001\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h414AC3E82996F770; - ReadData3E = 64'h3F10000003FFFF7E; - ans = 64'h3F10000003FFFF7E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"403307\n"); - end - ReadData1E = 64'hC3D013FFFFFFFFFF; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"403613\n"); - end - ReadData1E = 64'hB7F9E772425B7128; - ReadData2E = 64'hBFAFFDC000000000; - ReadData3E = 64'h380FFFFFFFFBFFFD; - ans = 64'h381067967FEF4B19; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"403919\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'hFFFFBEFFFFFFFFFF; - ans = 64'hFFFFBEFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"404225\n"); - end - ReadData1E = 64'hB7E37A866D226CAF; - ReadData2E = 64'h3FD49B0AB002569D; + ReadData2E = 64'hBEDFFFFFFFFD0000; ReadData3E = 64'h3CA0000000000001; ans = 64'h3CA0000000000001; FrmE = 3'b000; @@ -51616,12 +15072,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"404531\n"); + $fwrite(fp,"385384\n"); + end + ReadData1E = 64'h4000A40EC69220D4; + ReadData2E = 64'h3FDE000000007FFF; + ReadData3E = 64'hDB2E00000FFFFFFF; + ans = 64'hDB2E00000FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"386385\n"); end ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -51655,12 +15150,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"404837\n"); + $fwrite(fp,"387386\n"); end - ReadData1E = 64'h43FA57E9C5624B8A; - ReadData2E = 64'hC800000FFFFF7FFE; - ReadData3E = 64'h4342599B7B2573CC; - ans = 64'hCC0A58041D4B3E2A; + ReadData1E = 64'hC1FFFFFFFFF01FFF; + ReadData2E = 64'h001000003FFFFFF7; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -51694,12 +15189,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"405143\n"); + $fwrite(fp,"388387\n"); end ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBF800000000407FF; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'h47B8D3D941C7D797; + ans = 64'h47B8D3D941C7D797; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -51733,12 +15228,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"405449\n"); + $fwrite(fp,"389388\n"); end - ReadData1E = 64'hC3E0000008FFFFFF; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'h47403FFFDFFFFFFF; - ans = 64'h47403FFFE0000000; + ReadData1E = 64'hC7FFFF80003FFFFF; + ReadData2E = 64'hBFDFFEFFFFFFFFEF; + ReadData3E = 64'hC010800000000010; + ans = 64'h47EFFE80043FFDEE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -51772,12 +15267,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"405755\n"); + $fwrite(fp,"390389\n"); + end + ReadData1E = 64'hC7EFFFFFF8400000; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h449FFFFFF8400002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"391390\n"); end ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3E50FFFFFFFFFFF6; - ReadData3E = 64'h467001F7FFFFFFFF; - ans = 64'h467001F7FFFFFFFF; + ReadData2E = 64'h402FFFFE10000000; + ReadData3E = 64'h3E9FFFFDFF7FFFFE; + ans = 64'h3E9FFFFDFF7FFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -51811,12 +15345,480 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"406061\n"); + $fwrite(fp,"392391\n"); end - ReadData1E = 64'h7FD000000FFFFFFA; + ReadData1E = 64'h4AA007FFFC000000; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h400EFFFFFFFFFFEF; + ans = 64'hCA8007FFFC000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"393392\n"); + end + ReadData1E = 64'h0010000000000001; + ReadData2E = 64'hB12FFEFFFFFFFFF7; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"394393\n"); + end + ReadData1E = 64'h001FFFFFFFFF87FE; + ReadData2E = 64'h61E4FB512A07AB11; + ReadData3E = 64'h4BC0008000000000; + ans = 64'h4BC0008000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"395394\n"); + end + ReadData1E = 64'h0010000000000001; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"396395\n"); + end + ReadData1E = 64'h43D0000014000000; + ReadData2E = 64'hBFD0000000080FFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hC3B0000014080FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"397396\n"); + end + ReadData1E = 64'h0010000000000001; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'hBF8FFC0000001FFE; + ans = 64'hBF8FFC0000001FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"398397\n"); + end + ReadData1E = 64'hBCAE42FEE27E8D0E; + ReadData2E = 64'h3FE0800400000000; + ReadData3E = 64'h41E400FFFFFFFFFE; + ans = 64'h41E400FFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"399398\n"); + end + ReadData1E = 64'h20900201FFFFFFFE; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'hA0900201FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"400399\n"); + end + ReadData1E = 64'h0010000000000001; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'hBFFBAFD2FCBD7BB8; + ans = 64'hBFFBAFD2FCBD7BB8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"401400\n"); + end + ReadData1E = 64'hB7EFF800FFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h409FFFFF8000003F; + ans = 64'h409FFFFF8000003F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"402401\n"); + end + ReadData1E = 64'h0010000000000001; + ReadData2E = 64'h00150980F504928D; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"403402\n"); + end + ReadData1E = 64'h4C3FFFFFFE00007F; + ReadData2E = 64'hBFC26D298CBC97D7; + ReadData3E = 64'hB80DCBB8B21468D7; + ans = 64'hCC126D298B95C587; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"404403\n"); + end + ReadData1E = 64'h0010000000000001; ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'h7FE0000000000000; - ans = 64'hFFE000001FFFFFF2; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -51850,12 +15852,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"406367\n"); + $fwrite(fp,"405404\n"); end - ReadData1E = 64'h7FECAFD59CB7B74C; - ReadData2E = 64'h41DBCBEB843B4CF3; - ReadData3E = 64'h41F8A2957B307164; - ans = 64'h7FF0000000000000; + ReadData1E = 64'hDF1048DE0071E620; + ReadData2E = 64'h43DDFFFE00000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hE2FE889E37B9CF6E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -51889,12 +15891,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"406673\n"); + $fwrite(fp,"406405\n"); end ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'hC340000004080000; - ans = 64'hC340000004080000; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'hBCE981E80D843272; + ans = 64'hBCE981E80D843272; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -51928,12 +15930,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"406979\n"); + $fwrite(fp,"407406\n"); end - ReadData1E = 64'hB81FF80000000001; - ReadData2E = 64'hC1C71750D077617C; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'h39F7118AFC4343A4; + ReadData1E = 64'h463FFF7FFBFFFFFF; + ReadData2E = 64'h2DFFFFFFFDBFFFFE; + ReadData3E = 64'hB7F0000000020004; + ans = 64'hB7F0000000020004; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -51967,360 +15969,9 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"407285\n"); + $fwrite(fp,"408407\n"); end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"407591\n"); - end - ReadData1E = 64'h802FFFFFFFFFFA00; - ReadData2E = 64'h37E6AE1D90D70705; - ReadData3E = 64'hBFDFFF77FFFFFFFE; - ans = 64'hBFDFFF77FFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"407897\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC1C00203FFFFFFFF; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hBFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"408203\n"); - end - ReadData1E = 64'h43EFFBFFFFFFDFFF; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'hC036CD7A7F9E1F02; - ans = 64'hC41FFBFFFFFFDFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"408509\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBFE280673AD588A9; - ReadData3E = 64'h4025DE3CDA0994EF; - ans = 64'h4025DE3CDA0994EF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"408815\n"); - end - ReadData1E = 64'hC3EFFFF0000FFFFF; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'hC340000000000001; - ans = 64'h441FFF70000FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"409121\n"); - end - ReadData1E = 64'h4032E061B83BDA94; - ReadData2E = 64'hC8F000000001FBFF; - ReadData3E = 64'hBF4ED64192CA3998; - ans = 64'hC932E061B83E31E7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"409427\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'hE7C002000FFFFFFF; - ans = 64'hE7C002000FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"409733\n"); - end - ReadData1E = 64'hC1E7545A88785004; - ReadData2E = 64'hC120007FFF800000; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'h431755152A91F0F2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"410039\n"); - end - ReadData1E = 64'h0010000000000001; + ReadData1E = 64'h4010000000023FFE; ReadData2E = 64'hC340000000000000; ReadData3E = 64'h7FE0000000000000; ans = 64'h7FE0000000000000; @@ -52357,51 +16008,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"410345\n"); - end - ReadData1E = 64'hC2D91B69773500AA; - ReadData2E = 64'h40B1000000000006; - ReadData3E = 64'hFFDFFFFFFFE0007F; - ans = 64'hFFDFFFFFFFE0007F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"410651\n"); + $fwrite(fp,"409408\n"); end ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h4340000FFFDFFFFF; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h3FE0000000000000; + ReadData2E = 64'h3FBC11BBEB93B009; + ReadData3E = 64'hC870100000002000; + ans = 64'hC870100000002000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -52435,90 +16047,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"410957\n"); + $fwrite(fp,"410409\n"); end - ReadData1E = 64'hBCAE912E62741E61; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'hBCAC430028149BD0; - ans = 64'h3FFE912E62741E62; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"411263\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC3EFFC0000000003; - ReadData3E = 64'h4031FFFFFFFDFFFF; - ans = 64'h4031FFFFFFFDFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"411569\n"); - end - ReadData1E = 64'hC1C000000027FFFE; + ReadData1E = 64'hC5B3D108B4419266; ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'h452000000027FFFE; + ReadData3E = 64'h43555CEBE62673CF; + ans = 64'h4913D108B4419265; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -52552,51 +16086,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"411875\n"); - end - ReadData1E = 64'hC0CFFF7FFBFFFFFF; - ReadData2E = 64'h7E000000FFFFFFFB; - ReadData3E = 64'h800FFFFC0003FFFE; - ans = 64'hFEDFFF81FBF7FFB5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"412181\n"); + $fwrite(fp,"411410\n"); end ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'h401FFFFFFFFE003E; - ans = 64'h401FFFFFFFFE003E; + ReadData2E = 64'hB12FE07FFFFFFFFF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -52630,12 +16125,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"412487\n"); + $fwrite(fp,"412411\n"); end - ReadData1E = 64'hB8900000080007FF; - ReadData2E = 64'h433FE0000FFFFFFE; - ReadData3E = 64'h8000000000000000; - ans = 64'hBBDFE0001FF00FF4; + ReadData1E = 64'h3FB0003800000000; + ReadData2E = 64'hC0DFFFFF7FFFFFE0; + ReadData3E = 64'h3FB5876AA8C5D58D; + ans = 64'hC0A0000CB129CE64; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -52669,285 +16164,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"412793\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'hC340000000000001; - ans = 64'hC340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"413099\n"); - end - ReadData1E = 64'hC174AF337885BA36; - ReadData2E = 64'h801FFFFFFFEFFFDF; - ReadData3E = 64'h41FBFFFFFFFFFFFC; - ans = 64'h41FBFFFFFFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"413405\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h001153E88EFDD9B6; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hBFD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"413711\n"); - end - ReadData1E = 64'hBFD2000000FFFFFF; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'hC16FFFFFFFFF7FEF; - ans = 64'h7FC2000001000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"414017\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h84D00001000000FE; - ReadData3E = 64'hC0500020000000FF; - ans = 64'hC0500020000000FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"414323\n"); - end - ReadData1E = 64'hDE54CE8EEB63015D; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"414629\n"); - end - ReadData1E = 64'hB2200027FFFFFFFF; - ReadData2E = 64'h47E1F36BF0B15ECA; - ReadData3E = 64'h407FFFFFFFFFF007; - ans = 64'h407FFFFFFFFFF007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"414935\n"); + $fwrite(fp,"413412\n"); end ReadData1E = 64'h0010000000000001; ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'h43D00FFFFFFFFEFF; - ans = 64'h43D00FFFFFFFFEFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hC014000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -52981,518 +16203,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"415241\n"); + $fwrite(fp,"414413\n"); end - ReadData1E = 64'hC1EFBFF7FFFFFFFF; - ReadData2E = 64'hC032BA8DF73A392C; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"415547\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'h400FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"415853\n"); - end - ReadData1E = 64'h00000000000C0000; - ReadData2E = 64'hBE80000FFFEFFFFE; - ReadData3E = 64'h763FFFFC07FFFFFE; - ans = 64'h763FFFFC07FFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"416159\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hCF531BF125DB15C1; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'h3CAFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"416465\n"); - end - ReadData1E = 64'hC1CFFFFEEFFFFFFF; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'h474E6EDD61B287DA; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"416771\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hBFF0004000000040; - ReadData3E = 64'h480FFDFFFFFFFFDE; - ans = 64'h480FFDFFFFFFFFDE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"417077\n"); - end - ReadData1E = 64'h3CA0000100000100; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'h4000000000000000; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"417383\n"); - end - ReadData1E = 64'h8017C536DDFF8DDC; - ReadData2E = 64'h40B0003FFFFFFFDF; - ReadData3E = 64'h43E1000000000007; - ans = 64'h43E1000000000007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"417689\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'h434100000000000F; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"417995\n"); - end - ReadData1E = 64'hC03FFC0010000000; - ReadData2E = 64'h354FFFFFFDFFFFFE; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"418301\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"418607\n"); - end - ReadData1E = 64'hED20034307B6E182; - ReadData2E = 64'h3FDFFFFC000000FF; - ReadData3E = 64'hC1DDBCE05D5025DF; - ans = 64'hED100341074E810B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"418913\n"); - end - ReadData1E = 64'h0010000000000001; - ReadData2E = 64'h3CA42E8DA0B707E4; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'h801FFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"419219\n"); - end - ReadData1E = 64'hC0CF800000800000; - ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'hC0000002007FFFFF; + ReadData1E = 64'hC3400007DFFFFFFF; + ReadData2E = 64'hC35C634015F9AB0B; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; #10 @@ -53527,12 +16242,129 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"419525\n"); + $fwrite(fp,"415414\n"); + end + ReadData1E = 64'h0010000000000001; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'hBFC246F573646EE5; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"416415\n"); + end + ReadData1E = 64'hA95B5C1BC7705126; + ReadData2E = 64'hC26FFFFFFFFFEEFF; + ReadData3E = 64'h000002FFFFFFFFFF; + ans = 64'h2BDB5C1BC770429C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"417416\n"); + end + ReadData1E = 64'h400FFFFFFF81FFFE; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"418417\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBF00001003FFFFFF; - ReadData3E = 64'hC34FFC07FFFFFFFE; - ans = 64'hC34FFC07FFFFFFFE; + ReadData2E = 64'h4030000FFFFFFBFF; + ReadData3E = 64'h45A01FFFFFFBFFFE; + ans = 64'h45A01FFFFFFBFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -53566,168 +16398,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"419831\n"); + $fwrite(fp,"419418\n"); end - ReadData1E = 64'hBF91F142D19F36E5; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'hBFF0000000000001; - ans = 64'hBFF0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"420137\n"); - end - ReadData1E = 64'h7FFFFF00000007FF; - ReadData2E = 64'h3F0FFFFFFDFFFEFE; - ReadData3E = 64'hBFE4E89A16B1F0B7; - ans = 64'h7FFFFF00000007FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"420443\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'h4010001FFFFFFFFB; - ans = 64'h4010001FFFFFFFFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"420749\n"); - end - ReadData1E = 64'h4030000207FFFFFF; - ReadData2E = 64'h3FB0000001000001; - ReadData3E = 64'hC34FFFFFFFFFFFFE; - ans = 64'hC34FFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"421055\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData1E = 64'hC1D040000001FFFF; ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'h4000000000000000; - ans = 64'h4000000000000000; + ReadData3E = 64'hB10504F34660256D; + ans = 64'hB10504F34660256D; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -53761,51 +16437,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"421361\n"); - end - ReadData1E = 64'h000D9AB04F057759; - ReadData2E = 64'h8020000000007FFF; - ReadData3E = 64'h43BFFFFFFFFFFFFF; - ans = 64'h43BFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"421667\n"); + $fwrite(fp,"420419\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBDAEFFFFFFFFEFFF; - ReadData3E = 64'h0010000000000000; - ans = 64'h000FFFFFFFFE1000; + ReadData2E = 64'h31D000000023FFFE; + ReadData3E = 64'h8010000000000001; + ans = 64'h8010000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -53839,12 +16476,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"421973\n"); + $fwrite(fp,"421420\n"); end - ReadData1E = 64'h3D04003FFFFFFFFF; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'h8010000FFFFFF000; - ans = 64'h8010000FFFFFEFD8; + ReadData1E = 64'h401FFFFEFFFFFFEE; + ReadData2E = 64'h5A9336321F9DC07D; + ReadData3E = 64'h403000010FFFFFFF; + ans = 64'h5AC3363185EC2F75; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -53878,324 +16515,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"422279\n"); + $fwrite(fp,"422421\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC03FEFFFFFFFFF7F; - ReadData3E = 64'h40000010000001FE; - ans = 64'h40000010000001FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"422585\n"); - end - ReadData1E = 64'hA1CFFFC0000FFFFF; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h3FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"422891\n"); - end - ReadData1E = 64'hBFE0000000010200; - ReadData2E = 64'hBFDDE00000000000; - ReadData3E = 64'hC04F72F0FC0052B0; - ans = 64'hC04F5510FC0050CE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"423197\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'h40420003FFFFFFFF; - ans = 64'h40420003FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"423503\n"); - end - ReadData1E = 64'h1FD0000000001010; - ReadData2E = 64'hF7E201FFFFFFFFFF; - ReadData3E = 64'h4340000000000000; - ans = 64'hD7C2020000001213; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"423809\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'hBFF0000000000001; - ans = 64'hBFF0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"424115\n"); - end - ReadData1E = 64'h806E1FFFFFFFFFFF; - ReadData2E = 64'h3FEFFFFFFEFBFFFF; - ReadData3E = 64'hFFFFFFFFFFFB8000; - ans = 64'hFFFFFFFFFFFB8000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"424421\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h7FF03FFFFFF7FFFF; - ReadData3E = 64'h8000000000000001; - ans = 64'h7FF83FFFFFF7FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"424727\n"); - end - ReadData1E = 64'hB21FFDFFFEFFFFFF; ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'hBFCFBFFFFFFFFFDF; - ans = 64'hBFCFBFFFFFFFFFDF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h001FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -54229,12 +16554,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"425033\n"); + $fwrite(fp,"423422\n"); end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC1B603569C15ABE9; - ReadData3E = 64'hC270000008000006; - ans = 64'hC270000008000006; + ReadData1E = 64'h3290120000000000; + ReadData2E = 64'hB814000008000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -54268,90 +16593,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"425339\n"); - end - ReadData1E = 64'hBF8007FFFFFFBFFE; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFDFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"425645\n"); - end - ReadData1E = 64'hB8795CFD10295802; - ReadData2E = 64'h3940200000000FFF; - ReadData3E = 64'hDBC07FFFFFFFF800; - ans = 64'hDBC07FFFFFFFF800; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"425951\n"); + $fwrite(fp,"424423\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'hBF9250BCC49C6F75; - ans = 64'hBF9250BCC49C6F75; + ReadData3E = 64'hC15000000000000D; + ans = 64'hC15000000000000D; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -54385,12 +16632,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"426257\n"); + $fwrite(fp,"425424\n"); end - ReadData1E = 64'hBF3FFFFFFFFFFFFF; - ReadData2E = 64'h3FEFFFFE000003FF; - ReadData3E = 64'hC010000000000001; - ans = 64'hC010007FFFF80001; + ReadData1E = 64'hC79FF80003FFFFFE; + ReadData2E = 64'h7FEFFC0000003FFE; + ReadData3E = 64'h2BD0020000000001; + ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -54424,202 +16671,7 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"426563\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h3FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"426869\n"); - end - ReadData1E = 64'hC7E77FD7CFDA2EB7; - ReadData2E = 64'hC7EBFFFFFFFEFFFE; - ReadData3E = 64'h7FF512B59DBA0209; - ans = 64'h7FFD12B59DBA0209; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"427175\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3F9122AE3B5AC8CD; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"427481\n"); - end - ReadData1E = 64'hC03FFFFFFFFFF00F; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'h002FFFFFFFFF5FFF; - ans = 64'hBCFFFFFFFFFFF00E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"427787\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC1F0000003FFFE00; - ReadData3E = 64'h41F00200000001FE; - ans = 64'h41F00200000001FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"428093\n"); + $fwrite(fp,"426425\n"); end ReadData1E = 64'hFFE20000000FFFFE; ReadData2E = 64'h3CAFFFFFFFFFFFFE; @@ -54658,51 +16710,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"428399\n"); - end - ReadData1E = 64'h3C92000000000006; - ReadData2E = 64'h8023D9D6A90F4495; - ReadData3E = 64'hC1E0201FFFFFFFFF; - ans = 64'hC1E0201FFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"428705\n"); + $fwrite(fp,"427426\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'hBF2CF30ABF2C898A; - ans = 64'hBF2CF30ABF2C898A; + ReadData2E = 64'h96123071B43EE3A7; + ReadData3E = 64'h3FD6039180230AC1; + ans = 64'h3FD6039180230AC1; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -54736,12 +16749,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"429011\n"); + $fwrite(fp,"428427\n"); end - ReadData1E = 64'hBFF110E2C0331245; - ReadData2E = 64'h47E0000010000FFF; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'hC7E110E2D1440615; + ReadData1E = 64'h43D0000004000000; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h7FDFFFF800001FFF; + ans = 64'h7FDFFFF800001FFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -54775,12 +16788,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"429317\n"); + $fwrite(fp,"429428\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h3F80100007FFFFFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -54814,12 +16827,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"429623\n"); + $fwrite(fp,"430429\n"); end - ReadData1E = 64'hC80FFFFFC0FFFFFE; - ReadData2E = 64'h9CE636531A22D396; - ReadData3E = 64'hCC000000403FFFFF; - ans = 64'hCC000000403FFFFF; + ReadData1E = 64'h3EAFFE003FFFFFFE; + ReadData2E = 64'hBFD0021000000000; + ReadData3E = 64'h802C77A26B88B5D6; + ans = 64'hBE90010FFF041FFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -54853,10 +16866,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"429929\n"); + $fwrite(fp,"431430\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC3FFFFF80000007F; + ReadData2E = 64'h3FE0000000000001; ReadData3E = 64'h7FEFFFFFFFFFFFFE; ans = 64'h7FEFFFFFFFFFFFFE; FrmE = 3'b000; @@ -54892,12 +16905,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"430235\n"); + $fwrite(fp,"432431\n"); end - ReadData1E = 64'hB7E040000003FFFF; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'hC03FFFFFFFDFFBFF; - ans = 64'hC03FFFFFFFDFFBFF; + ReadData1E = 64'hC69DFF9DA3FF789B; + ReadData2E = 64'hCD5FFE000001FFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h540DFDBDAA27189B; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -54931,558 +16944,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"430541\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h000E000000000040; - ReadData3E = 64'h3EF000000000010F; - ans = 64'h3EF000000000010F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"430847\n"); - end - ReadData1E = 64'h802FFFFFFFF07FFF; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBCA0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"431153\n"); - end - ReadData1E = 64'h41C1008000000000; - ReadData2E = 64'h43EB1E5DE79D6E0D; - ReadData3E = 64'hBEB007FFFFFF8000; - ans = 64'h45BCD11CB90681D9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"431459\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'hB7E002FFFFFFFFFF; - ans = 64'hB7E002FFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"431765\n"); - end - ReadData1E = 64'hC020000040000001; - ReadData2E = 64'hBFB000000000077F; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hBFF7FFFFDFFFFC3E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"432071\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'h3FD0000000000000; - ans = 64'h3FD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"432377\n"); - end - ReadData1E = 64'h40600000043FFFFE; - ReadData2E = 64'h4AB80191FEDD0220; - ReadData3E = 64'hC2520000000003FF; - ans = 64'h4B280192053D6CE5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"432683\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h40207FFFFFBFFFFF; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"432989\n"); - end - ReadData1E = 64'h3FCB7B8B687AC30A; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'hCA50000000000408; - ans = 64'hCA50000000000408; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"433295\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3FDFFFFFC1FFFFFF; - ReadData3E = 64'hC7FAFFFFFFFFFFFF; - ans = 64'hC7FAFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"433601\n"); - end - ReadData1E = 64'h51900080000007FF; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'h51900080000007FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"433907\n"); - end - ReadData1E = 64'h80047FFFFFFFFFFF; - ReadData2E = 64'h3FF0000001008000; - ReadData3E = 64'h3FB5BEBC9BBB5778; - ans = 64'h3FB5BEBC9BBB5778; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"434213\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'h1CA0000000000070; - ans = 64'h1CA0000000000070; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"434519\n"); - end - ReadData1E = 64'h472578883E29B548; - ReadData2E = 64'h475A91AD5F59CD8E; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h4E91D3AD2F7635F8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"434825\n"); + $fwrite(fp,"433432\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBCA0000000000001; + ReadData3E = 64'h78733E9BB34BFE61; + ans = 64'h78733E9BB34BFE61; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -55516,12 +16983,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"435131\n"); + $fwrite(fp,"434433\n"); end - ReadData1E = 64'h3BE7FFFFFFFFFFFD; - ReadData2E = 64'h480FFFFC003FFFFF; - ReadData3E = 64'hC7AFFFFF7FFFFFDE; - ans = 64'hC7AFFFFF7FFFFFDE; + ReadData1E = 64'h514E752EF33774C5; + ReadData2E = 64'hBEE000000003FEFF; + ReadData3E = 64'hBFEFFF7FFFFFFFFD; + ans = 64'hD03E752EF33F1028; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -55555,207 +17022,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"435437\n"); + $fwrite(fp,"435434\n"); end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hAA300001FFEFFFFE; - ReadData3E = 64'h4340000000000001; - ans = 64'h4340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"435743\n"); - end - ReadData1E = 64'h4FC000000001FFEF; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'h3F800011FFFFFFFF; - ans = 64'h4FC000000001FFEF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"436049\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBC5FBD681C0884C4; - ReadData3E = 64'h3D3FFC000000FFFF; - ans = 64'h3D3FFC000000FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"436355\n"); - end - ReadData1E = 64'h000F0000001FFFFE; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'h8000FFFFFFDFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"436661\n"); - end - ReadData1E = 64'h339FFFFFFFF9FFFE; - ReadData2E = 64'h659F200000000000; - ReadData3E = 64'hC3E000003FFFDFFF; - ans = 64'h594F1FFFFFFA29FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"436967\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData1E = 64'hFFEFFFFEFFC00000; ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'h13B7D8137EFDC31C; - ans = 64'h13B7D8137EFDC31C; + ReadData3E = 64'h8000000000000000; + ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -55789,51 +17061,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"437273\n"); - end - ReadData1E = 64'h7FF00000040001FF; - ReadData2E = 64'hBFFFFFFFFFFFEFFE; - ReadData3E = 64'hBFE0000000000001; - ans = 64'h7FF80000040001FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"437579\n"); + $fwrite(fp,"436435\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'h0037FFFFFFFFFFFE; + ReadData2E = 64'h3B4FFFFFE000007F; + ReadData3E = 64'h25400000F8000000; + ans = 64'h25400000F8000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -55867,168 +17100,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"437885\n"); + $fwrite(fp,"437436\n"); end - ReadData1E = 64'hC03FFFFFFFFBFFBF; - ReadData2E = 64'hBFFFE0003FFFFFFF; - ReadData3E = 64'h41E6E39FBC98F40E; - ans = 64'h41E6E39FC490F41E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"438191\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hB7F0000000100003; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"438497\n"); - end - ReadData1E = 64'h40FB93DAC8FEC06B; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'h40100000007FFF00; - ans = 64'h410B93FAC8FEC16B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"438803\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3D9FFFFFFF800100; - ReadData3E = 64'hBCAFFFFFFFB7FFFE; - ans = 64'hBCAFFFFFFFB7FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"439109\n"); - end - ReadData1E = 64'hBFDFC6D013CB57F9; + ReadData1E = 64'hB3487BE0ACEE8E38; ReadData2E = 64'h4000000000000001; - ReadData3E = 64'h0000000000000000; - ans = 64'hBFEFC6D013CB57FB; + ReadData3E = 64'h9C9154BDC5F9C386; + ans = 64'hB3587BE0ACEE8E3A; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -56062,51 +17139,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"439415\n"); - end - ReadData1E = 64'h3CAFFFFFFE3FFFFF; - ReadData2E = 64'h3FFFFFFFFFF7FFF7; - ReadData3E = 64'hED7EFFFF7FFFFFFE; - ans = 64'hED7EFFFF7FFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"439721\n"); + $fwrite(fp,"438437\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'hC0219DFC89EECA7C; - ans = 64'hC0219DFC89EECA7C; + ReadData2E = 64'h401FFFFEFBFFFFFE; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -56140,12 +17178,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"440027\n"); + $fwrite(fp,"439438\n"); end - ReadData1E = 64'hBD20000000200FFF; - ReadData2E = 64'hBFEB900DFBE9BCDF; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'h3FE00000000000DC; + ReadData1E = 64'h37FF7FFFFFFFFFFE; + ReadData2E = 64'h36D000000000005E; + ReadData3E = 64'hE6025A6A12D8EF90; + ans = 64'hE6025A6A12D8EF90; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -56179,207 +17217,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"440333\n"); + $fwrite(fp,"440439\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'h003BFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"440639\n"); - end - ReadData1E = 64'hDFD0000000010800; - ReadData2E = 64'h00020000000FFFFF; - ReadData3E = 64'hBFC0007FFFFFFFBE; - ans = 64'hBFC0007FFFFFFFBE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"440945\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h8010000000801FFF; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h400FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"441251\n"); - end - ReadData1E = 64'h41CA78579544CC5A; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'h3187FFFFFFFEFFFF; - ans = 64'h41EA78579544CC58; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"441557\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h54AFFFFC40000000; - ReadData3E = 64'h76E00800000000FF; - ans = 64'h76E00800000000FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"441863\n"); - end - ReadData1E = 64'hBF1BFFFFEFFFFFFF; ReadData2E = 64'h4010000000000000; - ReadData3E = 64'h7FF0000000000001; - ans = 64'h7FF8000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -56413,12 +17256,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"442169\n"); + $fwrite(fp,"441440\n"); end - ReadData1E = 64'h43CFFFFFF803FFFE; - ReadData2E = 64'h40D00004FFFFFFFF; - ReadData3E = 64'hCF20000000008800; - ans = 64'hCF20000000008800; + ReadData1E = 64'h3800000001FFFBFE; + ReadData2E = 64'h4058841371B29E76; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h3868841374C31AC0; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -56452,207 +17295,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"442475\n"); + $fwrite(fp,"442441\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'h3F00080400000000; - ans = 64'h3F00080400000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"442781\n"); - end - ReadData1E = 64'h8020B3E20AEAF03E; - ReadData2E = 64'hC34F8007FFFFFFFF; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hBCAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"443087\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'h0000000000000000; - ans = 64'h004FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"443393\n"); - end - ReadData1E = 64'h3FDFFEFBFFFFFFFF; - ReadData2E = 64'hBFFFFFFFF7FFFF7F; - ReadData3E = 64'hC04ADED407B3CC8E; - ans = 64'hC04B5ECFF793CD90; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"443699\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3FD0000010000007; - ReadData3E = 64'hC000000000000000; - ans = 64'hC000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"444005\n"); - end - ReadData1E = 64'hB81FFFC000000020; ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'h0019444730A7E4F3; - ans = 64'hB84FFFC00000001E; + ReadData3E = 64'h41A07FFFFFFFFFBE; + ans = 64'h41A07FFFFFFFFFBE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -56686,12 +17334,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"444311\n"); + $fwrite(fp,"443442\n"); end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3FD0000041FFFFFF; - ReadData3E = 64'h400100007FFFFFFF; - ans = 64'h400100007FFFFFFF; + ReadData1E = 64'hC004BC4F2261BFA2; + ReadData2E = 64'h4035B7D003C15E18; + ReadData3E = 64'h001FBFFFFFFFEFFF; + ans = 64'hC04C255F3B1C30BE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -56725,714 +17373,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"444617\n"); + $fwrite(fp,"444443\n"); end - ReadData1E = 64'h47E0800001FFFFFE; - ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"444923\n"); - end - ReadData1E = 64'h3CA0007FFDFFFFFE; - ReadData2E = 64'h4D40000081FFFFFF; - ReadData3E = 64'h400806D221155416; - ans = 64'h49F0008080040FED; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"445229\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'h40FFEBFFFFFFFFFE; - ans = 64'h40FFEBFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"445535\n"); - end - ReadData1E = 64'h38100000100FFFFE; - ReadData2E = 64'h402FFFF0000003FE; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h3CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"445841\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData1E = 64'h3FB07FFFFF7FFFFF; ReadData2E = 64'h4340000000000001; - ReadData3E = 64'h7FF0000000000001; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"446147\n"); - end - ReadData1E = 64'h3FF1FFFFFEFFFFFE; - ReadData2E = 64'h4159EFFAF3E842A2; - ReadData3E = 64'hBFD0000100003FFE; - ans = 64'h415D2DFA40C64A44; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"446453\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h401FFFFFBFFFFEFE; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h3FF0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"446759\n"); - end - ReadData1E = 64'h403F000000040000; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'h400F9880943E2802; - ans = 64'h439F00000003FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"447065\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBF7F360561360260; - ReadData3E = 64'h44C9E2E2A78E50F2; - ans = 64'h44C9E2E2A78E50F2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"447371\n"); - end - ReadData1E = 64'hC0500001F8000000; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'hC3AF8003EFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"447677\n"); - end - ReadData1E = 64'h3E11000000000020; - ReadData2E = 64'h3FD00007FFFFFFFD; - ReadData3E = 64'hC8654A4F1E1F4FDC; - ans = 64'hC8654A4F1E1F4FDC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"447983\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'h3810000010020000; - ans = 64'h400FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"448289\n"); - end - ReadData1E = 64'h43D0000000080007; - ReadData2E = 64'h2ACFFFEFFFBFFFFF; - ReadData3E = 64'h8010000000000001; - ans = 64'h2EAFFFEFFFD00005; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"448595\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"448901\n"); - end - ReadData1E = 64'h002FFFFFFF000000; - ReadData2E = 64'h54EFFFFFFE3FFFFF; - ReadData3E = 64'hFFC003FFFFFFFFFF; - ans = 64'hFFC003FFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"449207\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC1FFFFFFF800001F; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hBFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"449513\n"); - end - ReadData1E = 64'h3EF0000407FFFFFE; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'hBFBB0E2E40869182; - ans = 64'h7EF0000407FFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"449819\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3FB2E318F3B70CE6; - ReadData3E = 64'hFF432ECC5E786035; - ans = 64'hFF432ECC5E786035; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"450125\n"); - end - ReadData1E = 64'h3FFFFFFF81FFFFFF; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; ReadData3E = 64'hC340000000000000; - ans = 64'h7FF0000000000000; + ans = 64'hC33DF00000100000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -57466,51 +17412,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"450431\n"); - end - ReadData1E = 64'hC05FFFFFFFFFFF7E; - ReadData2E = 64'hC80FFFBFFFFFFF7E; - ReadData3E = 64'h480C1D6E12BFFBDE; - ans = 64'h48801BFD6E12BF7A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"450737\n"); + $fwrite(fp,"445444\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'h4B9000000007DFFF; - ans = 64'h4B9000000007DFFF; + ReadData2E = 64'h002D5E7E0A11C3D4; + ReadData3E = 64'h6E6FFFFFFF80001F; + ans = 64'h6E6FFFFFFF80001F; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -57544,12 +17451,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"451043\n"); + $fwrite(fp,"446445\n"); end - ReadData1E = 64'h47F0FBFFFFFFFFFF; - ReadData2E = 64'h48007FFFFFFFFDFF; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h500183DFFFFFFDDE; + ReadData1E = 64'h3930010000000010; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'hC0001FFDFFFFFFFF; + ans = 64'h7920010000000010; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -57583,11 +17490,89 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"451349\n"); + $fwrite(fp,"447446\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'h409FFFDFFFFFFFEF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"448447\n"); + end + ReadData1E = 64'h3F1FFFEFEFFFFFFE; + ReadData2E = 64'h2EC0F20FE2E84CF5; + ReadData3E = 64'h381FF800FFFFFFFE; + ans = 64'h381FF800FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"449448\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; ans = 64'h7FF0000000000000; FrmE = 3'b000; #10 @@ -57622,12 +17607,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"451655\n"); + $fwrite(fp,"450449\n"); end - ReadData1E = 64'hC0674B0ABB8C523C; - ReadData2E = 64'h43E003FFF8000000; - ReadData3E = 64'h9D500000010FFFFF; - ans = 64'hC45750DD7295AFF3; + ReadData1E = 64'hBFFFDFFFFFFFDFFF; + ReadData2E = 64'hC0500000FFFFFDFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -57661,128 +17646,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"451961\n"); + $fwrite(fp,"451450\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h7FD4BFB4A018A1E6; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'h4008BFB4A018A1E5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"452267\n"); - end - ReadData1E = 64'hBFD6729F998C9D9E; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'hC730000001FFF7FF; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"452573\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBFDFFFFFFF3FFFFE; - ReadData3E = 64'h381FFFFFFBFFFFFE; - ans = 64'h381FFFFFFBFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"452879\n"); - end - ReadData1E = 64'h427000001FFFFC00; ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'h4010000000000001; + ReadData3E = 64'hDC1FFFFFFFFF01FE; ans = 64'h7FFFFFFFFFFFFFFF; FrmE = 3'b000; #10 @@ -57817,12 +17685,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"453185\n"); + $fwrite(fp,"452451\n"); end - ReadData1E = 64'hC800001000000003; - ReadData2E = 64'h3F1039D67DF32534; - ReadData3E = 64'hBF700000000007FF; - ans = 64'hC72039E6B7C9A32A; + ReadData1E = 64'h3FBBFFFFDFFFFFFF; + ReadData2E = 64'hBFD8223DFD4E66AA; + ReadData3E = 64'hBFBFFDFFFFEFFFFF; + ans = 64'hBFC5467D895896F5; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -57856,4378 +17724,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"453491\n"); + $fwrite(fp,"453452\n"); end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'h456A3212BAB43622; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"453797\n"); - end - ReadData1E = 64'h403001000000001F; - ReadData2E = 64'h40220FFFFFFFFFFF; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"454103\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'hC340000000000000; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"454409\n"); - end - ReadData1E = 64'hBF7FE8F6D20EF31D; - ReadData2E = 64'h401E00000000003E; - ReadData3E = 64'h3FEFFFFFFFF01FFF; - ans = 64'h3FEE215989A13FBC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"454715\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hB7FFFFFFFFF7FFDF; - ReadData3E = 64'hBFD0000000000000; - ans = 64'hBFD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"455021\n"); - end - ReadData1E = 64'h002FFFFFFFFFFFFE; + ReadData1E = 64'h400FFFBFFFF7FFFF; ReadData2E = 64'h8000000000000001; - ReadData3E = 64'h7FDFC000003FFFFF; - ans = 64'h7FDFC000003FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"455327\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h2243DFFFFFFFFFFE; - ReadData3E = 64'hF575672B472E7543; - ans = 64'hF575672B472E7543; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"455633\n"); - end - ReadData1E = 64'hC34FFF7FFFFFBFFF; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hC00FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"455939\n"); - end - ReadData1E = 64'h5BE07FFFFFFFFFFF; - ReadData2E = 64'hC1C8DB69C5C29889; - ReadData3E = 64'h3F1FFFFFFFC01000; - ans = 64'hDDB9A24513F0AD4C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"456245\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'hC1F90BEF36AF6276; - ans = 64'hC1F90BEF36AF6276; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"456551\n"); - end - ReadData1E = 64'hC32D08A5B4CB2446; - ReadData2E = 64'hC300000001007FFF; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"456857\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'h4010000000000001; - ans = 64'h4010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"457163\n"); - end - ReadData1E = 64'h380FFDFFFFFFFFFD; - ReadData2E = 64'hC7E0000000040200; - ReadData3E = 64'hFFD1FFFFFFFFFFFE; - ans = 64'hFFD1FFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"457469\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3F8FFFC000000001; - ReadData3E = 64'h3CA0000000000001; - ans = 64'h3CA0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"457775\n"); - end - ReadData1E = 64'hBCA2F22027F558C5; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'hC86FFF2000000000; - ans = 64'hC86FFF2000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"458081\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hCD2000000FFFFEFF; - ReadData3E = 64'h41CB8762E572139A; - ans = 64'h41CB8762E572139A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"458387\n"); - end - ReadData1E = 64'hBFD20FFFFFFFFFFF; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'h3FFFFFFFFFFFFFFE; - ans = 64'h3FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"458693\n"); - end - ReadData1E = 64'hB803BB596AD832F9; - ReadData2E = 64'h41E02D7CF46C5A88; - ReadData3E = 64'hB1F00000007FBFFE; - ans = 64'hB9F3F3726FB862F2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"458999\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'hBFE68188CE9F46C1; - ans = 64'hBFE68188CE9F46C1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"459305\n"); - end - ReadData1E = 64'hBE407FFFFFFFFFFE; - ReadData2E = 64'h3FD84D410DEC4BE3; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"459611\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hC00FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"459917\n"); - end - ReadData1E = 64'hC3E0000000000440; - ReadData2E = 64'h3C2FFF000000007F; - ReadData3E = 64'hA3E000001FFE0000; - ans = 64'hC01FFF00000008FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"460223\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hB820000040020000; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'h801FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"460529\n"); - end - ReadData1E = 64'hC800000FFFF7FFFE; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'hC3C0100010000000; - ans = 64'hC3C0100010000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"460835\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h0011FFFFFF7FFFFE; - ReadData3E = 64'hC1DFFFFEFFF7FFFF; - ans = 64'hC1DFFFFEFFF7FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"461141\n"); - end - ReadData1E = 64'h2CB0800000000800; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"461447\n"); - end - ReadData1E = 64'h37EF00000000007F; - ReadData2E = 64'h9DE0000000000FFC; - ReadData3E = 64'hBF0FFFFFFFFFFDF6; - ans = 64'hBF0FFFFFFFFFFDF6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"461753\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'h409FFFFFEFFFFFBF; - ans = 64'h409FFFFFEFFFFFBF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"462059\n"); - end - ReadData1E = 64'h8027B36FC882BDE2; - ReadData2E = 64'h002FFFFFFFFFFC03; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"462365\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'h3FFFFFFFFFFFFFFE; - ans = 64'h3FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"462671\n"); - end - ReadData1E = 64'h403FFFFFFF00001F; - ReadData2E = 64'h380FFFFFFF000800; - ReadData3E = 64'h40300000000F7FFF; - ans = 64'h40300000000F7FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"462977\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC39FFFFFFC000008; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'h83CFFFFFFC000007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"463283\n"); - end - ReadData1E = 64'h80120DDC76612AE5; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'h46AAF8F1DA03076B; - ans = 64'h46AAF8F1DA03076B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"463589\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC03770390354A8D4; - ReadData3E = 64'h3E9000FFFFFFF000; - ans = 64'h3E9000FFFFFFF000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"463895\n"); - end - ReadData1E = 64'hA4A1D2744FEB9D7F; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'h3FE0000000000001; - ans = 64'h3FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"464201\n"); - end - ReadData1E = 64'h4031B1054AFF739B; - ReadData2E = 64'hFFD0000080000004; - ReadData3E = 64'hBFE000010FFFFFFE; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"464507\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'h4830000FFFC00000; - ans = 64'h4830000FFFC00000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"464813\n"); - end - ReadData1E = 64'hFFD0000000000FFF; - ReadData2E = 64'h4800400040000000; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"465119\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"465425\n"); - end - ReadData1E = 64'hC02FFFFFC00003FF; - ReadData2E = 64'hC34FFFF8000003FE; - ReadData3E = 64'h845FFFF7FFFBFFFE; - ans = 64'h438FFFF7C00017FD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"465731\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3E50000000003FEF; - ReadData3E = 64'h8000000000000000; - ans = 64'h0000000008000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"466037\n"); - end - ReadData1E = 64'h407FFFF0000001FF; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'h306B9067D3C8EFCE; - ans = 64'hC06FFFF0000001FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"466343\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC570400000000FFE; - ReadData3E = 64'h47EFBFFBFFFFFFFF; - ans = 64'h47EFBFFBFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"466649\n"); - end - ReadData1E = 64'h3F4F80001FFFFFFE; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hBFE003F00003FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"466955\n"); - end - ReadData1E = 64'h1FE000000020001F; - ReadData2E = 64'h8027BF4A25DCD90E; - ReadData3E = 64'hBD9199B5B792B56D; - ans = 64'hBD9199B5B792B56D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"467261\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'hBFD000001000001F; - ans = 64'hBFD000001000001F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"467567\n"); - end - ReadData1E = 64'h37E0400000000FFF; - ReadData2E = 64'hBF6FFFFFFFDF7FFE; - ReadData3E = 64'hC010000000000000; - ans = 64'hC010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"467873\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'h3FE0000000000001; - ans = 64'h3FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"468179\n"); - end - ReadData1E = 64'h3EF0000080000100; - ReadData2E = 64'h3D76E46D9FFCED73; - ReadData3E = 64'hA8965757C3E2E3B5; - ans = 64'h3C76E46E57205BE1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"468485\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h400FFFFC0000001E; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"468791\n"); - end - ReadData1E = 64'hBFDFC00400000000; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'hC1F31AF02D2008C2; - ans = 64'hC1F31AF02D1818C1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"469097\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h8B90000040000001; - ReadData3E = 64'hC34FBA3A82A10FA5; - ans = 64'hC34FBA3A82A10FA5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"469403\n"); - end - ReadData1E = 64'hC1E0006FFFFFFFFF; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h41E0006FFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"469709\n"); - end - ReadData1E = 64'h7AC002003FFFFFFF; - ReadData2E = 64'h40D000000003FFF0; - ReadData3E = 64'hC04FFC000003FFFE; - ans = 64'h7BA002004004006F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"470015\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'h404FFFFFFFFE0080; - ans = 64'h404FFFFFFFFE0080; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"470321\n"); - end - ReadData1E = 64'h7FDE1D66FE274D5D; - ReadData2E = 64'h401FFF00000000FE; - ReadData3E = 64'h4000000000000001; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"470627\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hBFDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"470933\n"); - end - ReadData1E = 64'h3FD0040080000000; - ReadData2E = 64'h3FBFFFFFEFFFFBFF; - ReadData3E = 64'h357FFFFFFFFF8001; - ans = 64'h3FA0040077FDFDBF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"471239\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h002FFF80000003FE; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"471545\n"); - end - ReadData1E = 64'hC18000FFBFFFFFFF; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'h0EF6C97A58CFBD2E; - ans = 64'h418000FFC0000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"471851\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC7AAF283BA042806; - ReadData3E = 64'h3FBA9508F09BCF9D; - ans = 64'h3FBA9508F09BCF9D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"472157\n"); - end - ReadData1E = 64'h450F37C9621767D3; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'hBCA0000000000000; - ans = 64'hC51F37C9621767D2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"472463\n"); - end - ReadData1E = 64'hBFF007B2DC33D3AC; - ReadData2E = 64'hBFE02000003FFFFE; - ReadData3E = 64'h47E0000400010000; - ans = 64'h47E0000400010000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"472769\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'h3CABEF444A1B7558; - ans = 64'h3CABEF444A1B7558; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"473075\n"); - end - ReadData1E = 64'hFFE0000007FFFFFF; - ReadData2E = 64'hC3E000801FFFFFFF; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"473381\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h3CAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"473687\n"); - end - ReadData1E = 64'hC3C001FE00000000; - ReadData2E = 64'h41C822E65EA006B2; - ReadData3E = 64'h5B90000000080100; - ans = 64'h5B90000000080100; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"473993\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3FDFFFFFFFFFF200; - ReadData3E = 64'hC34FFFFFFFFFFFFE; - ans = 64'hC34FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"474299\n"); - end - ReadData1E = 64'h3FBF8000001FFFFE; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'h37E00000007FEFFE; - ans = 64'hBFCF800000200000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"474605\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC08FFFFFE01FFFFF; - ReadData3E = 64'hC02FFFFFFFFBFF7E; - ans = 64'hC02FFFFFFFFBFF7E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"474911\n"); - end - ReadData1E = 64'h3FC004FFFFFFFFFE; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'h0010000000000001; - ans = 64'hBFE004FFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"475217\n"); - end - ReadData1E = 64'h3E035583CD466A30; - ReadData2E = 64'h002000000000BFFE; - ReadData3E = 64'hCC41000001FFFFFE; - ans = 64'hCC41000001FFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"475523\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'h4010000000000820; - ans = 64'h4010000000000820; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"475829\n"); - end - ReadData1E = 64'h40500000000006FE; - ReadData2E = 64'hBF3078FF64F622E6; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'h3FEF7C3804D84EAD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"476135\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'hBCA0000000000000; - ans = 64'hBCA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"476441\n"); - end - ReadData1E = 64'hCC7FFFFFFFFFFFFE; - ReadData2E = 64'hBFE3FFFFFFEFFFFF; - ReadData3E = 64'h49DFFF7DFFFFFFFE; - ans = 64'h4C73FFFFFFF007FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"476747\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBFF94B59D0203802; - ReadData3E = 64'h4340000000000000; - ans = 64'h4340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"477053\n"); - end - ReadData1E = 64'h801FFFF0000FFFFF; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'h3F04D4E9A95B7E9A; - ans = 64'h3F04D4E9A95B7E9A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"477359\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hAB8FFFC00000001E; - ReadData3E = 64'h43E07FFBFFFFFFFF; - ans = 64'h43E07FFBFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"477665\n"); - end - ReadData1E = 64'h37EFFDFFFFFFFBFE; - ReadData2E = 64'hC010000000000001; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'hB80FFDFFFFFFFC00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"477971\n"); - end - ReadData1E = 64'hC34020000000001F; - ReadData2E = 64'hC34FFFFFFFFFFFF0; - ReadData3E = 64'h7FE277DFE7545D62; - ans = 64'h7FE277DFE7545D62; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"478277\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'hC034585A9C396FF4; - ans = 64'hC034585A9C396FF4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"478583\n"); - end - ReadData1E = 64'h3FD0001FDFFFFFFE; - ReadData2E = 64'hB59FFFFFFFFDFFFA; - ReadData3E = 64'hBFE0000000000000; - ans = 64'hBFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"478889\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'h0010000000000001; - ans = 64'h804DFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"479195\n"); - end - ReadData1E = 64'h3FD1B49966115E41; - ReadData2E = 64'hBFDBFFFFFF7FFFFF; - ReadData3E = 64'hC3C3FFFFFFFFFFFE; - ans = 64'hC3C3FFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"479501\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3E96DFBD778A9099; - ReadData3E = 64'hC010000000000001; - ans = 64'hC010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"479807\n"); - end - ReadData1E = 64'h40A38217A755983F; - ReadData2E = 64'hC340000000000000; - ReadData3E = 64'h28D00000000040FF; - ans = 64'hC3F38217A755983F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"480113\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hFFF1AFE5F2357440; - ReadData3E = 64'h39733A3911627A6D; - ans = 64'hFFF9AFE5F2357440; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"480419\n"); - end - ReadData1E = 64'hC3C0804000000000; - ReadData2E = 64'hC340000000000000; - ReadData3E = 64'hFFFFFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"480725\n"); - end - ReadData1E = 64'hBFFFFFFFFFFDFFFA; - ReadData2E = 64'hC1FFFFFFFFE0003F; - ReadData3E = 64'h3F7F675AC649130D; - ans = 64'h420FFFFFFFDE0FED; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"481031\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'h3FEFFFFFFE004000; - ans = 64'h3FEFFFFFFE004000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"481337\n"); - end - ReadData1E = 64'h37E0000080000FFF; - ReadData2E = 64'hB926FE9CADDEFE5D; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h3FD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"481643\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'h837FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"481949\n"); - end - ReadData1E = 64'hC120000000007FFE; - ReadData2E = 64'h3FF0B4D0ECAA7A9E; - ReadData3E = 64'h414002000007FFFF; - ans = 64'h4137A99789BA7FDD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"482255\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h040FFFFFFF800FFF; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'h400FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"482561\n"); - end - ReadData1E = 64'hBFE000000010FFFE; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'hC180010000200000; - ans = 64'h433FFFFFFE21DFFA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"482867\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h400A0615FD54A801; - ReadData3E = 64'hBFD20F1FD86CA453; - ans = 64'hBFD20F1FD86CA453; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"483173\n"); - end - ReadData1E = 64'h801FFF00001FFFFF; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"483479\n"); - end - ReadData1E = 64'hC1C000000003FFFE; - ReadData2E = 64'hBFF001000000003E; - ReadData3E = 64'h001003FFF7FFFFFF; - ans = 64'h41C001000004007C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"483785\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'hBFEFFFFDFFBFFFFE; - ans = 64'hC013FFFFBFF80000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"484091\n"); - end - ReadData1E = 64'h4D2FBFFFFFF80000; - ReadData2E = 64'hC0300FFFFF000000; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'hCD6FDFBFFDFBF800; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"484397\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'hFFFFFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"484703\n"); - end - ReadData1E = 64'hBFC5A1020AA218E6; - ReadData2E = 64'hC3E5495908A19130; - ReadData3E = 64'h402A691B151F3561; - ans = 64'h43BCC679A28B88D3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"485009\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h000D1C68E3B85FA9; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hBFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"485315\n"); - end - ReadData1E = 64'hD58000FFFFFFFFEF; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'h4150008000000010; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"485621\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hBF940956532022AE; - ReadData3E = 64'hB806C023758F4DA2; - ans = 64'hB806C023758F4DA2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"485927\n"); - end - ReadData1E = 64'hC3E0000000040040; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'hFFE0000000000001; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"486233\n"); - end - ReadData1E = 64'h3F84200000000000; - ReadData2E = 64'h4302931B6A82A168; - ReadData3E = 64'hBE2FDFFFFFFFDFFF; - ans = 64'h42975D087BF84F05; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"486539\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'h43EE227816B0B1FF; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"486845\n"); - end - ReadData1E = 64'hBEFFFFFFFF7FFFE0; - ReadData2E = 64'h41EFFFFFFF5FFFFF; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'hC0FFFFFFFEDFFFDF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"487151\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'h7FF0000000000000; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"487457\n"); - end - ReadData1E = 64'h3F9FFFFFF0400000; - ReadData2E = 64'h3C1001DFFFFFFFFE; - ReadData3E = 64'h47B7CC518010305D; - ans = 64'h47B7CC518010305D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"487763\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'hC1DFFFFE40000000; ReadData3E = 64'h3FF0000000000000; ans = 64'h3FF0000000000000; FrmE = 3'b000; @@ -62263,51 +17763,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"488069\n"); - end - ReadData1E = 64'hC2AFFFFF80080000; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'h381FFFFC0007FFFE; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"488375\n"); + $fwrite(fp,"454453\n"); end ReadData1E = 64'h001FFFFFFFFFFFFF; - ReadData2E = 64'h3F94D7DCFF72CCDB; - ReadData3E = 64'h000FFFFFFFFFDF7F; - ans = 64'h0010A6BEE7FB75E6; + ReadData2E = 64'h434FFFFFC003FFFF; + ReadData3E = 64'h381FFFFFC7FFFFFF; + ans = 64'h381FFFFFC7FFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -62341,12 +17802,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"488681\n"); + $fwrite(fp,"455454\n"); end - ReadData1E = 64'hB7E8D5DDDB5169D9; - ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFE; + ReadData1E = 64'h37E200001FFFFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h3800000000014000; + ans = 64'h3800000000014000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -62380,12 +17841,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"488987\n"); + $fwrite(fp,"456455\n"); end - ReadData1E = 64'h3FEFFFFFFFDFFDFF; - ReadData2E = 64'hC1C939221EF1CD9B; - ReadData3E = 64'h4091FFFFFF000000; - ans = 64'hC1C9391FDED89305; + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'hBF13FFFFFFFFFBFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h8000009FFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -62419,7 +17880,1177 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"489293\n"); + $fwrite(fp,"457456\n"); + end + ReadData1E = 64'hC040020FFFFFFFFF; + ReadData2E = 64'h3E03FFFFC0000000; + ReadData3E = 64'hBF543FFFFFFFFFFE; + ans = 64'hBF5440140293BFF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"458457\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h800FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"459458\n"); + end + ReadData1E = 64'h402FEFFFFBFFFFFF; + ReadData2E = 64'h3F81FFF800000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00EE0907FE3FFEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"460459\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'hBFF0010001FFFFFF; + ans = 64'hBFF0010001FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"461460\n"); + end + ReadData1E = 64'hC0501FFFFFFFFFFD; + ReadData2E = 64'h111FFFFEFFFFFFBF; + ReadData3E = 64'hE60FFFFBFFFFFFC0; + ans = 64'hE60FFFFBFFFFFFC0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"462461\n"); + end + ReadData1E = 64'hC00FEFFFFFFF7FFE; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h3FEFEFFFFFFF7FFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"463462\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'hBFEE000000800000; + ReadData3E = 64'h3F30100000007FFF; + ans = 64'h3F30100000007FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"464463\n"); + end + ReadData1E = 64'hBF9000000EFFFFFF; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hBB176DA3EFE1E6B9; + ans = 64'h3F8000000EFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"465464\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'h2CAFFF0001FFFFFF; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"466465\n"); + end + ReadData1E = 64'hB804408D0CE1D2D2; + ReadData2E = 64'hFFE003FFFFFFFFBE; + ReadData3E = 64'h41E0800010000000; + ans = 64'h77F4459D30250AF3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"467466\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"468467\n"); + end + ReadData1E = 64'h801FFF7000000000; + ReadData2E = 64'h463BFFFFFFFEFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"469468\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'hBFC04003FFFFFFFF; + ans = 64'hBFC04003FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"470469\n"); + end + ReadData1E = 64'hC3E047FFFFFFFFFE; + ReadData2E = 64'h40427774B7E47523; + ReadData3E = 64'hBFE04000000001FE; + ans = 64'hC432CA8E451FF930; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"471470\n"); + end + ReadData1E = 64'hC03348076CDBCF85; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"472471\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'h40DB08823C1E5772; + ReadData3E = 64'hFFF60C51A685C3AF; + ans = 64'hFFFE0C51A685C3AF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"473472\n"); + end + ReadData1E = 64'hC1E134C5E12D6668; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h400007FFFFFFFFFB; + ans = 64'h420134C5E13D6E67; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"474473\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'hC3CE131B5D9F79B7; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"475474\n"); + end + ReadData1E = 64'hB160000000060000; + ReadData2E = 64'hC01DAE63A350B974; + ReadData3E = 64'hC01FFFFFFFFFBC00; + ans = 64'hC01FFFFFFFFFBC00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"476475\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"477476\n"); + end + ReadData1E = 64'hBDB1000800000000; + ReadData2E = 64'h43EFDFFFFFEFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC1B0EF07F7F77FFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"478477\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'hC0AFFFFFC000FFFE; + ans = 64'hC0AFFFFFC000FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"479478\n"); + end + ReadData1E = 64'h43CD7DDF32A8CBE0; + ReadData2E = 64'hB80000000000087E; + ReadData3E = 64'h3FDFC0003FFFFFFF; + ans = 64'h3FDFC0003FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"480479\n"); + end + ReadData1E = 64'hC13FFFFEFFFFFFBE; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'h449FFFFEFFFFFFBC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"481480\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'hF31FFFFFFFBFFEFF; + ReadData3E = 64'hC320000000000003; + ans = 64'hC320000000000003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"482481\n"); + end + ReadData1E = 64'hB7EFFFFFFEFFFFFB; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'hC0433C2681885C24; + ans = 64'h77DFFFFFFEFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"483482\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'h7FF00000FFFFBFFF; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h7FF80000FFFFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"484483\n"); + end + ReadData1E = 64'h4360008000002000; + ReadData2E = 64'h2EDFFFF000000100; + ReadData3E = 64'hBFB000007FFFFBFF; + ans = 64'hBFB000007FFFFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"485484\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFF; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"486485\n"); + end + ReadData1E = 64'h497FFFFFFF87FFFF; + ReadData2E = 64'h39F8799130CA1E93; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h43867991306E56B2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"487486\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; ReadData2E = 64'h0000000000000000; @@ -62458,12 +19089,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"489599\n"); + $fwrite(fp,"488487\n"); end - ReadData1E = 64'h802FFFFEFFFFFFFF; - ReadData2E = 64'h43F00FFFFFFBFFFF; - ReadData3E = 64'h8010000000000000; - ans = 64'h84300FFF7F7BFFFF; + ReadData1E = 64'hC66FFFFFF7FFFFDF; + ReadData2E = 64'h0010000C00000000; + ReadData3E = 64'hC4AEFBA7FE26F126; + ans = 64'hC4AEFBA7FE26F126; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -62497,5353 +19128,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"489905\n"); + $fwrite(fp,"489488\n"); end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'hFFE0000000000001; - ans = 64'hFFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"490211\n"); - end - ReadData1E = 64'h400FFFFFF000001F; - ReadData2E = 64'h3104707296E48252; - ReadData3E = 64'h901FFFF0003FFFFF; - ans = 64'h312470728CAC491A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"490517\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h0F8000000FFFDFFE; - ReadData3E = 64'hBFE0000000000001; - ans = 64'hBFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"490823\n"); - end - ReadData1E = 64'h3F700000004FFFFF; + ReadData1E = 64'hC02FFFFBF7FFFFFE; ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'hFFF000400000000E; - ans = 64'hFFF800400000000E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"491129\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hFFF0080000FFFFFE; - ReadData3E = 64'hC00FFFFFFFFFFBBE; - ans = 64'hFFF8080000FFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"491435\n"); - end - ReadData1E = 64'h3FD408ECF56E2FA7; - ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'hC01FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"491741\n"); - end - ReadData1E = 64'h7FFFFFFFE003FFFE; - ReadData2E = 64'h4043FFFFFFDFFFFF; - ReadData3E = 64'hBFB017FFFFFFFFFF; - ans = 64'h7FFFFFFFE003FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"492047\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'h801FFFFBFFDFFFFE; - ans = 64'h801FFFFBFFDFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"492353\n"); - end - ReadData1E = 64'h7FDFFFFFF0FFFFFF; - ReadData2E = 64'hC3F0000000007FFC; - ReadData3E = 64'h0000000000000001; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"492659\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'h434FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"492965\n"); - end - ReadData1E = 64'hC3C8000000008000; - ReadData2E = 64'hCC2000003FFFFF7E; - ReadData3E = 64'h800000100000000F; - ans = 64'h4FF8000060007F3D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"493271\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h4030800000000100; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'h3FDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"493577\n"); - end - ReadData1E = 64'h8010000000400000; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'hBF200000000037FE; - ans = 64'hBF200000000037FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"493883\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hBFEE952F8893D136; - ReadData3E = 64'h4FFFFE03FFFFFFFE; - ans = 64'h4FFFFE03FFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"494189\n"); - end - ReadData1E = 64'hC7E007FFFFFFFFF7; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'h4010000000000000; - ans = 64'h4010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"494495\n"); - end - ReadData1E = 64'h412FF7FFFFFFEFFE; - ReadData2E = 64'h3FD785891B76C59A; - ReadData3E = 64'h3A200007FFFF7FFF; - ans = 64'h41177FA7B92FDC24; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"494801\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'h47FFFFF7FFFFFEFE; - ans = 64'h47FFFFF7FFFFFEFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"495107\n"); - end - ReadData1E = 64'hBFF8335B11D329F9; - ReadData2E = 64'hD5BFFFFFFE000200; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"495413\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'hC01FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"495719\n"); - end - ReadData1E = 64'h2F90000001EFFFFF; - ReadData2E = 64'h3CA0000000000090; - ReadData3E = 64'h43C63BA6AC9ACFB3; - ans = 64'h43C63BA6AC9ACFB3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"496025\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h3F7FF0000000FFFF; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hBCAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"496331\n"); - end - ReadData1E = 64'h4030FFFFFFFDFFFF; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'h3FBFFE000000FFFE; - ans = 64'h3FBFFE0000010086; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"496637\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h3FFB5677EF9DA389; - ReadData3E = 64'h801FF80007FFFFFF; - ans = 64'h0016B4EFD73B4710; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"496943\n"); - end - ReadData1E = 64'hC1CFFFFF7FFFFDFE; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'hC000000000000001; - ans = 64'hC00000000FFFFFC1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"497249\n"); - end - ReadData1E = 64'h3FB0000000000402; - ReadData2E = 64'hBDF71B09ABA2E778; - ReadData3E = 64'h381312450C546CDA; - ans = 64'hBDB71B09ABA2ED42; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"497555\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'hBFB0000800800000; - ans = 64'hBFB0000800800000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"497861\n"); - end - ReadData1E = 64'h0020007FFFFFFE00; - ReadData2E = 64'h3BBC144DCA2CAA95; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"498167\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'h4010000000000000; - ans = 64'h4010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"498473\n"); - end - ReadData1E = 64'hBF7FFFFFFFBFF7FF; - ReadData2E = 64'hBFC00001007FFFFF; - ReadData3E = 64'h37F521633D893DFC; - ans = 64'h3F500001005FFBFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"498779\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h7FFFFFFFF0007FFE; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h7FFFFFFFF0007FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"499085\n"); - end - ReadData1E = 64'hC03001FFFFFBFFFF; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'h10EFFFF77FFFFFFF; - ans = 64'hC01001FFFFFBFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"499391\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h37FE000000000008; - ReadData3E = 64'h001000083FFFFFFF; - ans = 64'h001000083FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"499697\n"); - end - ReadData1E = 64'hC86000800007FFFF; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'hC840008000080000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"500003\n"); - end - ReadData1E = 64'hC1C07FFFFFDFFFFF; - ReadData2E = 64'hBFE5A99ACE18D898; - ReadData3E = 64'h401E22E2A005217B; - ans = 64'h41B656E7ABE704CE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"500309\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'h43EFDFFFFF800000; - ans = 64'h43EFDFFFFF800000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"500615\n"); - end - ReadData1E = 64'h4010000100001FFF; - ReadData2E = 64'h40107FFFFC000000; - ReadData3E = 64'h7FE0000000000000; - ans = 64'h7FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"500921\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'hC000000000000001; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"501227\n"); - end - ReadData1E = 64'h3FE010003FFFFFFF; - ReadData2E = 64'h002473AD742511FA; - ReadData3E = 64'h3F33A5421650E578; - ans = 64'h3F33A5421650E578; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"501533\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h41580000000000FE; - ReadData3E = 64'h8010000000000001; - ans = 64'h0187FFFFE00000FC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"501839\n"); - end - ReadData1E = 64'h801FFF6FFFFFFFFF; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'h40FF7FFE00000000; - ans = 64'h40FF7FFE00000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"502145\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h434FFFFFF7FBFFFE; - ReadData3E = 64'h3FA0003FFFF80000; - ans = 64'h3FA0003FFFF80000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"502451\n"); - end - ReadData1E = 64'h4345049737D2616D; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'h4335049737D2616C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"502757\n"); - end - ReadData1E = 64'hB7FFDFFFFFFFFFFF; - ReadData2E = 64'hC32FFE0020000000; - ReadData3E = 64'hCF1FF7FFFFF7FFFF; - ans = 64'hCF1FF7FFFFF7FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"503063\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'h018FFFFFFFFFFBF6; - ans = 64'h019000000FFFFDFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"503369\n"); - end - ReadData1E = 64'h43F5E49AFA9FC2DA; - ReadData2E = 64'hB810000000000BFE; - ReadData3E = 64'hC340000000000001; - ans = 64'hC340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"503675\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h3FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"503981\n"); - end - ReadData1E = 64'h3FAB32343B9F34D5; - ReadData2E = 64'h3F800000F7FFFFFF; - ReadData3E = 64'hC149FFFFFFFFFFFF; - ans = 64'hC149FFFFFFF266E4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"504287\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hA9CFFFBFFFFFFFFB; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h000FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"504593\n"); - end - ReadData1E = 64'h3F4000100000003F; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'h422FF00000007FFF; - ans = 64'h422FF0000000803F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"504899\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC02FFFF8001FFFFE; - ReadData3E = 64'hB67A3E22C04C77F7; - ans = 64'hB67A3E22C04C77F7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"505205\n"); - end - ReadData1E = 64'hB74BFFFFFFF7FFFE; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h3FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"505511\n"); - end - ReadData1E = 64'hBF1FFFFBFFFFFDFF; - ReadData2E = 64'h41CA02C43C1F6969; - ReadData3E = 64'h3FEEDE240FD09F22; - ans = 64'hC0FA02B18CB4D85C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"505817\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'hC3FFFBF7FFFFFFFF; - ans = 64'hC3FFFBF7FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"506123\n"); - end - ReadData1E = 64'hC013FFBFFFFFFFFF; - ReadData2E = 64'h3FE80000FFFFFFFF; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'h4011002F60020000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"506429\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hBFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"506735\n"); - end - ReadData1E = 64'hBFE000001FFFFC00; - ReadData2E = 64'h43DFF7FFFF000000; - ReadData3E = 64'hC900000001FFEFFF; - ans = 64'hC900000001FFEFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"507041\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h37EFFF800007FFFF; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"507347\n"); - end - ReadData1E = 64'hBF8C03FFFFFFFFFE; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'hC3FFFFFFFFFF7FFC; - ans = 64'hC3FFFFFFFFFF7FFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"507653\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC20FBFDFFFFFFFFF; - ReadData3E = 64'hC3F000007F7FFFFE; - ans = 64'hC3F000007F7FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"507959\n"); - end - ReadData1E = 64'hFFFF7C5CCE30AC8C; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hFFFF7C5CCE30AC8C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"508265\n"); - end - ReadData1E = 64'hC8F001FFFFFFFDFF; - ReadData2E = 64'h37F0001FFE000000; - ReadData3E = 64'h3B7CC989A4C18870; - ans = 64'hC0F0022001FFBDFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"508571\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'hE20A7354F18E1999; - ans = 64'hE20A7354F18E1999; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"508877\n"); - end - ReadData1E = 64'hC03DFFFFFFFFFFF7; - ReadData2E = 64'hBFE38A75AE2155C3; - ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'h402CA39CA67E80C3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"509183\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h3FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"509489\n"); - end - ReadData1E = 64'h402080000001FFFF; - ReadData2E = 64'h3FBFFFFFFFFFFFCF; - ReadData3E = 64'h43E00FFFFFFEFFFE; - ans = 64'h43E00FFFFFFEFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"509795\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hE40008000000000F; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"510101\n"); - end - ReadData1E = 64'h43600000000040FE; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'h3F323FFFFFFFFFFE; - ans = 64'h43800000000040FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"510407\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h8010F897F57CA997; - ReadData3E = 64'h3540000100000200; - ans = 64'h3540000100000200; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"510713\n"); - end - ReadData1E = 64'h43C800000000001F; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'h43E800000000001D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"511019\n"); - end - ReadData1E = 64'hC1761E69B4B257B1; - ReadData2E = 64'h3F9FFFFFFEFFFE00; - ReadData3E = 64'hC0000001BFFFFFFF; - ans = 64'hC1261E6DB401D301; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"511325\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'hC3CFFFFFFFF7FF7F; - ans = 64'hC3CFFFFFFFF7FF7F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"511631\n"); - end - ReadData1E = 64'h000C9B46C7FC9346; - ReadData2E = 64'h3FB0003FFFFFFFFA; - ReadData3E = 64'h4000000000000000; - ans = 64'h4000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"511937\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h4010000000000000; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hBFD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"512243\n"); - end - ReadData1E = 64'h3F14AB7C91DA31FD; - ReadData2E = 64'h401000000007FF7E; - ReadData3E = 64'h9DA3FFFFFFC00000; - ans = 64'h3F34AB7C91E48713; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"512549\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h403FF0000000003E; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"512855\n"); - end - ReadData1E = 64'h83EC91CEF3FA9AAA; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'h401FC003FFFFFFFE; - ans = 64'h401FC003FFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"513161\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h4006FEED39B40EA1; - ReadData3E = 64'h37FA9D329C356AF4; - ans = 64'h37FA9D329C356AF4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"513467\n"); - end - ReadData1E = 64'hC0BD0366D6818E16; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'hC0ED0366D6818E15; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"513773\n"); - end - ReadData1E = 64'hC03E12E5D71D50F1; - ReadData2E = 64'hB7EF7FFF00000000; - ReadData3E = 64'hDD800000007BFFFF; - ans = 64'hDD800000007BFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"514079\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'hBEB0408E721B8F27; - ans = 64'hBEB0408E721B8F27; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"514385\n"); - end - ReadData1E = 64'h800FFFFFFFFFFFF8; - ReadData2E = 64'h3DBC9CA6A89A9686; - ReadData3E = 64'hBFF0000000000001; - ans = 64'hBFF0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"514691\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'h3CAFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"514997\n"); - end - ReadData1E = 64'h1CA378B1AF531F03; - ReadData2E = 64'hC0B0000000007FDF; - ReadData3E = 64'h3FF00003FFFFFFEE; - ans = 64'h3FF00003FFFFFFEE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"515303\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h475040001FFFFFFF; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"515609\n"); - end - ReadData1E = 64'h47E0000000000000; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'h40187746E35FBECD; - ans = 64'h4B30000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"515915\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h400000007FFFFFBE; - ReadData3E = 64'hC020000000C00000; - ans = 64'hC020000000C00000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"516221\n"); - end - ReadData1E = 64'hA4B00000001FFFFA; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'h0010000000000000; - ans = 64'hA8100000001FFFF9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"516527\n"); - end - ReadData1E = 64'h381FEFFFFFFFFF00; - ReadData2E = 64'h47E000002000000F; - ReadData3E = 64'h7FDFFC0000020000; - ans = 64'h7FDFFC0000020000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"516833\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'h7FE00000003FFEFF; - ans = 64'h7FE00000003FFEFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"517139\n"); - end - ReadData1E = 64'h43FFFFC000000004; - ReadData2E = 64'hC7E0001FFFFDFFFE; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'hCBEFFFFFFF7C0008; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"517445\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'h037FFFFFFFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"517751\n"); - end - ReadData1E = 64'hBFFFDFFFFDFFFFFE; - ReadData2E = 64'hBFFEB4C9BBCE1AC1; - ReadData3E = 64'h3F8FFFFFF0002000; - ans = 64'h400EB614F0170029; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"518057\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h405FDFFFFFFFFFF8; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'h401FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"518363\n"); - end - ReadData1E = 64'hCF4FFFFFEFFFFEFF; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'h80182D1FFA57A89A; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"518669\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC22FFF77FFFFFFFF; - ReadData3E = 64'hC3CFFE07FFFFFFFF; - ans = 64'hC3CFFE07FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"518975\n"); - end - ReadData1E = 64'h3FFC000000020000; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'h8000000000000001; - ans = 64'h7FEC000000020002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"519281\n"); - end - ReadData1E = 64'hBD000000006FFFFE; - ReadData2E = 64'h41A85FEB28D8E1AF; - ReadData3E = 64'h3800400400000000; - ans = 64'hBEB85FEB2983811A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"519587\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'h2F5FFFFFFFBFFFF0; - ans = 64'h401FFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"519893\n"); - end - ReadData1E = 64'h381FFFFF7FFFFEFE; - ReadData2E = 64'hD92FFEFFE0000000; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hD15FFEFF6003FF7E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"520199\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'h0010000000000000; - ans = 64'h401FFFFFFFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"520505\n"); - end - ReadData1E = 64'h72AC000000FFFFFF; - ReadData2E = 64'h37E6E3CCCDE32795; - ReadData3E = 64'hBFB000004000003E; - ans = 64'h6AA4075334DDE108; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"520811\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h3FFF7A6C08BB70BE; - ReadData3E = 64'hC010000000000000; - ans = 64'hC010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"521117\n"); - end - ReadData1E = 64'h47F00010003FFFFE; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'hC7FFE00000100000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"521423\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h4017D5BA5D98B0EF; - ReadData3E = 64'h400FFFFFFBFFFFBF; - ans = 64'h400FFFFFFBFFFFBF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"521729\n"); - end - ReadData1E = 64'hC003BFFFFFFFFFFF; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"522035\n"); - end - ReadData1E = 64'hBFAEF1261ABA05FC; - ReadData2E = 64'hC1ED08B6DD3A362B; - ReadData3E = 64'h43E00020007FFFFF; - ans = 64'h43E000200081C12E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"522341\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'h480FF3FFFFFFFFFE; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"522647\n"); - end - ReadData1E = 64'hC3DB82C6E85F00F3; - ReadData2E = 64'h333000001000003F; - ReadData3E = 64'h3FD0000000000000; - ans = 64'h3FD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"522953\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'h8000000000000001; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"523259\n"); - end - ReadData1E = 64'hBFBFFFFFFFFFF003; - ReadData2E = 64'hB7EFFBFFFFC00000; - ReadData3E = 64'h41E000FE00000000; - ans = 64'h41E000FE00000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"523565\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC7EFFFF7FFFFFDFF; - ReadData3E = 64'h4000000000000001; - ans = 64'h4000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"523871\n"); - end - ReadData1E = 64'hC1DFFFFFFFDE0000; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'hC710000003FFFFDF; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"524177\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hB2F79EF3767E3212; - ReadData3E = 64'hF4F3FFFFFF800000; - ans = 64'hF4F3FFFFFF800000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"524483\n"); - end - ReadData1E = 64'hBF7800000000003F; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"524789\n"); - end - ReadData1E = 64'hC012751F6F8812B9; - ReadData2E = 64'h41D0000000003FFE; - ReadData3E = 64'h7FFFFFFBFFFFFFEE; - ans = 64'h7FFFFFFBFFFFFFEE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"525095\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'hC0E000002000FFFE; - ans = 64'hC0E000002000FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"525401\n"); - end - ReadData1E = 64'h37EFC00000040000; - ReadData2E = 64'hC3C007FFFEFFFFFF; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBCA0003F9FBFFC11; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"525707\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"526013\n"); - end - ReadData1E = 64'h43CFFFFFFFFEFFFC; - ReadData2E = 64'hC040003EFFFFFFFF; - ReadData3E = 64'h3FE07FFBFFFFFFFF; - ans = 64'hC420003EFFFF7FFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"526319\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hCFEA28B4A04A46E4; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'hBFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"526625\n"); - end - ReadData1E = 64'hC20FFE00000003FF; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'h3FCFFFF000200000; - ans = 64'h3FCFFFF000200000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"526931\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h4CB00001FFFFFFDE; - ReadData3E = 64'h4030000002100000; - ans = 64'h4030000002100000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"527237\n"); - end - ReadData1E = 64'h38101FFFC0000000; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"527543\n"); - end - ReadData1E = 64'h886FFFFFFBF7FFFF; - ReadData2E = 64'h4003A7ECDA013DBE; - ReadData3E = 64'h402FFF6FFFFFFFFF; - ans = 64'h402FFF6FFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"527849\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'hC00FFFF000001FFE; - ans = 64'hC00FFFF000001FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"528155\n"); - end - ReadData1E = 64'hBFCFFFFEFFFDFFFF; - ReadData2E = 64'h3FC0000004007FFF; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'hBF9FFFFF07FEFFBD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"528461\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"528767\n"); - end - ReadData1E = 64'h3A6FFFFFFFFF7DFF; - ReadData2E = 64'hBFE2000007FFFFFF; - ReadData3E = 64'h3FCE1E88FE3E7FCE; - ans = 64'h3FCE1E88FE3E7FCE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"529073\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC7E1400000000000; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'h3FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"529379\n"); - end - ReadData1E = 64'hBE30000003FFF7FE; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'h001E000000001FFF; - ans = 64'h001E000002001FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"529685\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h43477310794BA290; - ReadData3E = 64'hC010D7F981A2B919; - ans = 64'hC010D7F981A2B919; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"529991\n"); - end - ReadData1E = 64'h43D00000047FFFFF; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'h4340000000000001; - ans = 64'h4340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"530297\n"); - end - ReadData1E = 64'h407000000000083E; - ReadData2E = 64'h480C00003FFFFFFF; - ReadData3E = 64'h7FF551A8F234313E; - ans = 64'h7FFD51A8F234313E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"530603\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'hBF7FFFFF80008000; - ans = 64'hBF7FFFFF80008000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"530909\n"); - end - ReadData1E = 64'hC3D3DFFFFFFFFFFE; - ReadData2E = 64'hC7ECF815284B7A7C; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'h4BD1FE152406E111; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"531215\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"531521\n"); - end - ReadData1E = 64'hC01F7FFFFFFFFEFF; - ReadData2E = 64'h001FFFFFEFFFFFFF; - ReadData3E = 64'h4032000000000040; - ans = 64'h4032000000000040; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"531827\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h0B7FF7FFFC000000; ReadData3E = 64'hBFE0000000000000; ans = 64'hBFE0000000000000; FrmE = 3'b000; @@ -67879,51 +19167,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"532133\n"); - end - ReadData1E = 64'h43D526C2A80AF822; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'hC7F39734008F12C8; - ans = 64'hC7F39734008F12C8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"532439\n"); + $fwrite(fp,"490489\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hA5B000007FFF7FFF; - ReadData3E = 64'h3FEFC5EE1ADC8D49; - ans = 64'h3FEFC5EE1ADC8D49; + ReadData2E = 64'h3FC000010000007F; + ReadData3E = 64'h801F1665C82E3D27; + ans = 64'h801B1665882E3D08; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -67957,12 +19206,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"532745\n"); + $fwrite(fp,"491490\n"); end - ReadData1E = 64'h4036000000000000; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC020000000000002; + ReadData1E = 64'h4064185129B89C12; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h36C86570084E6938; + ans = 64'h36C86570084E6938; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -67996,439 +19245,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"533051\n"); - end - ReadData1E = 64'hC13FFFFFFE0003FF; - ReadData2E = 64'hBFC000003FFFFBFF; - ReadData3E = 64'hC020000041FFFFFF; - ans = 64'h410FFFC07DFEF3F5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"533357\n"); + $fwrite(fp,"492491\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'hC3FF80000000001F; - ans = 64'hC3FF80000000001F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"533663\n"); - end - ReadData1E = 64'h484FFFDFFFFFBFFF; - ReadData2E = 64'h40001007FFFFFFFF; - ReadData3E = 64'h0000000000000000; - ans = 64'h48600FF7EFF7DFDE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"533969\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'h4340000000000001; - ans = 64'h4340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"534275\n"); - end - ReadData1E = 64'hC03EFFFFFFFFFEFF; - ReadData2E = 64'h491BFFDFFFFFFFFE; - ReadData3E = 64'hA3D003FFFFFFFFFE; - ans = 64'hC96B1FE0FFFFFF1D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"534581\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h3FF192ACE36CC33A; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h3FD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"534887\n"); - end - ReadData1E = 64'hBCA010001FFFFFFE; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'h480FFE000000000F; - ans = 64'h480FFE000000000F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"535193\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC05FFFFFF8000080; - ReadData3E = 64'hBD700000200001FF; - ans = 64'hBD700000200001FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"535499\n"); - end - ReadData1E = 64'h4012E71496D6009C; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h3FFA31D6D253FEC5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"535805\n"); - end - ReadData1E = 64'hFFE000001C000000; - ReadData2E = 64'hBF4FFFFFFF80001F; - ReadData3E = 64'hC0002DB970BBFE4F; - ans = 64'h7F4000001BC0000F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"536111\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'h5A373ED6A8B003D5; - ans = 64'h5A373ED6A8B003D5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"536417\n"); - end - ReadData1E = 64'h801FFF7FFFFFDFFF; - ReadData2E = 64'h401117AFD8D51332; + ReadData2E = 64'h41D7545C99594931; ReadData3E = 64'h7FF0000000000001; ans = 64'h7FF8000000000001; FrmE = 3'b000; @@ -68464,12 +19284,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"536723\n"); + $fwrite(fp,"493492\n"); + end + ReadData1E = 64'hC13000003FFFFFFA; + ReadData2E = 64'hBD9CA8B3D2E093AF; + ReadData3E = 64'hBFFBDF05E8631A56; + ans = 64'hBFFBDEFEBE3608F5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"494493\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -68503,12 +19362,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"537029\n"); + $fwrite(fp,"495494\n"); end - ReadData1E = 64'h182FFFFFF7FFFBFE; - ReadData2E = 64'h464003FF7FFFFFFF; - ReadData3E = 64'hC7F00004FFFFFFFE; - ans = 64'hC7F00004FFFFFFFE; + ReadData1E = 64'h2FB00FFFDFFFFFFF; + ReadData2E = 64'h403F686FEB0628E9; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -68542,12 +19401,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"537335\n"); + $fwrite(fp,"496495\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC0300000000801FE; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h7FF7DA275C692912; + ans = 64'h7FFFDA275C692912; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -68581,12 +19440,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"537641\n"); + $fwrite(fp,"497496\n"); end - ReadData1E = 64'h000000002FFFFFFF; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'hC02000000000007E; - ans = 64'hC02000000000007E; + ReadData1E = 64'hC0A0000000FFFFFD; + ReadData2E = 64'h43F39AFB0EFAD8D9; + ReadData3E = 64'hC0C0000041FFFFFE; + ans = 64'hC4A39AFB10348886; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -68620,12 +19479,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"537947\n"); + $fwrite(fp,"498497\n"); + end + ReadData1E = 64'h41D896B27558F7D3; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'h41C896B27558F7D2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"499498\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC1FFF81FFFFFFFFE; - ReadData3E = 64'h3FDFFFFFFFF77FFF; - ans = 64'h3FDFFFFFFFF77FFF; + ReadData2E = 64'h41400803FFFFFFFE; + ReadData3E = 64'h26B7FFFFFFFFFF7E; + ans = 64'h26B7FFFFFFFFFF7E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -68659,12 +19557,636 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"538253\n"); + $fwrite(fp,"500499\n"); end - ReadData1E = 64'hC7FFFFFFFFFFFBF0; - ReadData2E = 64'hBFE0000000000001; + ReadData1E = 64'hB81000001FFFFFBF; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hC800000000000047; + ans = 64'hC800000000000047; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"501500\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData2E = 64'hC1D24080A5957D44; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"502501\n"); + end + ReadData1E = 64'hBF9FFFFFC0000003; + ReadData2E = 64'h4628776713F7A5FD; + ReadData3E = 64'hC010003FFFFFBFFF; + ans = 64'hC5D87766E308D7D7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"503502\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"504503\n"); + end + ReadData1E = 64'hC7F0000000007F7F; + ReadData2E = 64'hBFC002000000000F; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h47C0020000007F9E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"505504\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h3FD01FFFFFFFFFFE; + ans = 64'h3FD01FFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"506505\n"); + end + ReadData1E = 64'hFFEE3FFFFFFFFFFF; + ReadData2E = 64'hBFB002000000FFFF; + ReadData3E = 64'h47E717EB2AAC8CC7; + ans = 64'h7FAE43C80001E3FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"507506\n"); + end + ReadData1E = 64'hC03C6ADBE9BF99BA; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"508507\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData2E = 64'h3F9FFFFFFFFDFFF7; + ReadData3E = 64'hC007FFFFFFFFEFFF; + ans = 64'hC007FFFFFFFFEFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"509508\n"); + end + ReadData1E = 64'h416FFFFFFFEFFFBF; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h3F3FFFFFFFF81FFF; + ans = 64'h418FFFFFFFF0FFBD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"510509\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData2E = 64'hC7F24D5AB856A206; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"511510\n"); + end + ReadData1E = 64'h7FFFFFFFFFE003FE; + ReadData2E = 64'h3FBFFFEFFDFFFFFE; + ReadData3E = 64'h43CFFFFE0007FFFF; + ans = 64'h7FFFFFFFFFE003FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"512511\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"513512\n"); + end + ReadData1E = 64'h37F00000007EFFFE; + ReadData2E = 64'hBF9D9F73398F7266; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"514513\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h02717FFFFFFFFFFF; + ans = 64'h03800008BFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"515514\n"); + end + ReadData1E = 64'hCA1C235AD6399896; + ReadData2E = 64'h42900000BFFFFFFE; + ReadData3E = 64'hC81EFFFFF0000000; + ans = 64'hCCBC235C27E1DA9D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"516515\n"); + end + ReadData1E = 64'hD16FF800007FFFFF; + ReadData2E = 64'h7FE0000000000000; ReadData3E = 64'hC000000000000000; - ans = 64'h47EFFFFFFFFFFBF2; + ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -68698,51 +20220,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"538559\n"); - end - ReadData1E = 64'h43EFFFFFFF7FFEFE; - ReadData2E = 64'hC1E0007FFE000000; - ReadData3E = 64'hC1EE098A9F9738A5; - ans = 64'hC5E0007FFDBFFD7F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"538865\n"); + $fwrite(fp,"517516\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'h402A0113351DAFC1; - ans = 64'h402A0113351DAFC1; + ReadData2E = 64'h7FDF80000000001F; + ReadData3E = 64'hC01FFF7FFFFFFC00; + ans = 64'hC0103F7FFFFFFBF1; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -68776,12 +20259,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"539171\n"); + $fwrite(fp,"518517\n"); end - ReadData1E = 64'h3EC00080000001FE; - ReadData2E = 64'h088007FFFFFFF800; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; + ReadData1E = 64'hD10FFFFFFFF3FFFE; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hB9D07F0000000000; + ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -68815,12 +20298,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"539477\n"); + $fwrite(fp,"519518\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hC1B0200200000000; + ReadData3E = 64'h8010000000000001; + ans = 64'h81E02002007FFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -68854,12 +20337,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"539783\n"); + $fwrite(fp,"520519\n"); end - ReadData1E = 64'h030C000000020000; - ReadData2E = 64'h3F72EFB08F55AC92; - ReadData3E = 64'h40DF76F22692A59F; - ans = 64'h40DF76F22692A59F; + ReadData1E = 64'h4800100000020000; + ReadData2E = 64'hBFFFFFFFFEDFFFFF; + ReadData3E = 64'hD6040000FFFFFFFE; + ans = 64'hD6040000FFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -68893,12 +20376,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"540089\n"); + $fwrite(fp,"521520\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hB80FFFFFFFC00001; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'h001FFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -68932,12 +20415,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"540395\n"); + $fwrite(fp,"522521\n"); end - ReadData1E = 64'h808E8D71D4EB26E2; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'h605B57A010AEBBA0; - ans = 64'h605B57A010AEBBA0; + ReadData1E = 64'hBFF3724D442AE9BA; + ReadData2E = 64'h3FFFFF001FFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401647271D66752B; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -68971,12 +20454,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"540701\n"); + $fwrite(fp,"523522\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hCAAE000000FFFFFF; - ReadData3E = 64'hFA00847923480522; - ans = 64'hFA00847923480522; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h3747569A23821E98; + ans = 64'h3747569A23821E98; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -69010,12 +20493,597 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"541007\n"); + $fwrite(fp,"524523\n"); end - ReadData1E = 64'hFFE000007FBFFFFE; + ReadData1E = 64'hC80F80007FFFFFFE; + ReadData2E = 64'hB6FDCD849ABF1991; + ReadData3E = 64'hFFDA52A9FFA2B882; + ans = 64'hFFDA52A9FFA2B882; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"525524\n"); + end + ReadData1E = 64'h000E000000010000; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"526525\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData2E = 64'h8020002000000000; + ReadData3E = 64'h37F0000007FF7FFE; + ans = 64'h37F0000007FF7FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"527526\n"); + end + ReadData1E = 64'hC0203FFFFFFFFFEE; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'hC02FFFFFFFFC001E; + ans = 64'hC02FFFFFFFFC001E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"528527\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData2E = 64'hC03FFFFF7EFFFFFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"529528\n"); + end + ReadData1E = 64'h680FFFDFFF000000; + ReadData2E = 64'h80105A578431ABB7; + ReadData3E = 64'hC02000000000FFFF; + ans = 64'hC02000000000FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"530529\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"531530\n"); + end + ReadData1E = 64'h41F000000000040F; + ReadData2E = 64'hC3CFFFFFF7FFFFC0; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hC5CFFFFFF80007DE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"532531\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h801FFFFBFFFFFF00; + ans = 64'h8023FFFDFFFFFF80; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"533532\n"); + end + ReadData1E = 64'hBE9FFFFFFFFFDFF6; + ReadData2E = 64'hBFEADE7111EE6384; + ReadData3E = 64'h000FFFFFFFFFFEDE; + ans = 64'h3E9ADE7111EE489D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"534533\n"); + end + ReadData1E = 64'h3FC0000000000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'hBFAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"535534\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData2E = 64'hBFEB3A8D823A7B01; + ReadData3E = 64'h3860000101FFFFFF; + ans = 64'h3860000101FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"536535\n"); + end + ReadData1E = 64'h4070000000000807; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'hBFB221345EEF9C22; + ans = 64'hC07001221345F700; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"537536\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData2E = 64'h43D04DC2BDBBF826; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"538537\n"); + end + ReadData1E = 64'h381FFFFDFFFFFFF8; + ReadData2E = 64'h47FFFFF000000006; + ReadData3E = 64'h43DFFFFC3FFFFFFF; + ans = 64'h43DFFFFC3FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"539538\n"); + end + ReadData1E = 64'h001FFFFFFFFFFFFE; ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h7FE000007FBFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -69049,12 +21117,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"541313\n"); + $fwrite(fp,"540539\n"); end - ReadData1E = 64'h402FFFFFFFFDFFFE; - ReadData2E = 64'h3FDC00000001FFFF; - ReadData3E = 64'h3FFFC00000400000; - ans = 64'h4021F80000081FFF; + ReadData1E = 64'h2178D59F4FA12547; + ReadData2E = 64'h3FD07FFFFBFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h21599C4C43E8C69A; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -69088,285 +21156,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"541619\n"); + $fwrite(fp,"541540\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'h41BE6A4FDAD1844F; - ans = 64'h41BE6A4FDAD1844F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"541925\n"); - end - ReadData1E = 64'hC6A0000000080007; - ReadData2E = 64'hFFD0000000088000; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"542231\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'hC000000000000000; - ans = 64'hC000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"542537\n"); - end - ReadData1E = 64'h4604C11700626B2B; - ReadData2E = 64'h3CAA520793793965; - ReadData3E = 64'h3FCFFFFF00001FFF; - ans = 64'h42C1121665239C7D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"542843\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h7FFFFFFFFFFFFA00; - ReadData3E = 64'h8010000000000000; - ans = 64'h7FFFFFFFFFFFFA00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"543149\n"); - end - ReadData1E = 64'hC03FF7FFFFFFFF7F; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'hC3FFFFF8000003FF; - ans = 64'hC3FFFFF8000003FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"543455\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC3F0000003F7FFFF; - ReadData3E = 64'h34CC2F99040AE502; - ans = 64'h34CC2F99040AE502; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"543761\n"); - end - ReadData1E = 64'h3F3FE00000000000; ReadData2E = 64'hC000000000000000; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hBFF003FC00000000; + ReadData3E = 64'h3FD00007EFFFFFFE; + ans = 64'h3FD00007EFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -69400,12 +21195,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"544067\n"); + $fwrite(fp,"542541\n"); end - ReadData1E = 64'h37F000000DFFFFFF; - ReadData2E = 64'h47F00000000043FF; - ReadData3E = 64'hC07FFFFFFEFFFFBE; - ans = 64'hC07FEFFFFEF1FF7A; + ReadData1E = 64'h4802000000000008; + ReadData2E = 64'h43EFC0000000003E; + ReadData3E = 64'h3F91000000000007; + ans = 64'h4C01DC000000002B; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -69439,90 +21234,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"544373\n"); + $fwrite(fp,"543542\n"); end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'hBF8961BE48C37E82; - ans = 64'hBF8961BE48C37E82; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"544679\n"); - end - ReadData1E = 64'hBFE2083CCB3D47F8; - ReadData2E = 64'h43D0443E6399E6DF; - ReadData3E = 64'hC340000000000000; - ans = 64'hC3C265261DC90B18; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"544985\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData1E = 64'h32FDCD38B18F9829; ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h3FF0000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -69556,51 +21273,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"545291\n"); - end - ReadData1E = 64'h434F8000FFFFFFFF; - ReadData2E = 64'h406FFFFC007FFFFF; - ReadData3E = 64'h4010007FFFFFC000; - ans = 64'h43CF7FFD107DE002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"545597\n"); + $fwrite(fp,"544543\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC3DFFC0003FFFFFE; - ReadData3E = 64'h0000000000000001; - ans = 64'h840FFC0003FFFFFC; + ReadData2E = 64'h7FDE000000000007; + ReadData3E = 64'h3FBE94F76DC7FCC5; + ans = 64'h400EF4A7BB6E3FEB; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -69634,246 +21312,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"545903\n"); + $fwrite(fp,"545544\n"); end - ReadData1E = 64'h2F30001FFEFFFFFF; - ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'hC1062003748F8F29; - ans = 64'hC1062003748F8F29; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"546209\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC07FF7FFFFFFFF7F; - ReadData3E = 64'h3F90000000201FFE; - ans = 64'h3F90000000201FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"546515\n"); - end - ReadData1E = 64'h801FFFFFEE000000; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'h3FDFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"546821\n"); - end - ReadData1E = 64'h3FCFFFFFEEFFFFFF; - ReadData2E = 64'hB7FFFFFFF7FFFFEF; - ReadData3E = 64'hB89FFF00000FFFFF; - ans = 64'hB8A00080000737FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"547127\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'hC0B0000000081FFF; - ans = 64'hC0B0000000081FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"547433\n"); - end - ReadData1E = 64'h3C4FF00040000000; - ReadData2E = 64'hBFCFFFFFFE00007E; - ReadData3E = 64'h4010000000000001; - ans = 64'h4010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"547739\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; + ReadData1E = 64'h3FC64FB9E0227052; ReadData2E = 64'hC010000000000001; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'hBF97DAD84567E1D9; + ans = 64'hBFE70E90A24DAF62; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -69907,51 +21351,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"548045\n"); - end - ReadData1E = 64'hC020000000040007; - ReadData2E = 64'h3469DC294133AA1B; - ReadData3E = 64'hC3DFE000000007FE; - ans = 64'hC3DFE000000007FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"548351\n"); + $fwrite(fp,"546545\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hBCCCC98E4AA02611; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h7FFFEFFFFFFFFDFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h7FFFEFFFFFFFFDFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -69985,12 +21390,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"548657\n"); + $fwrite(fp,"547546\n"); end - ReadData1E = 64'h3D46FFFFFFFFFFFF; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'h3FC31D5708AC8D44; - ans = 64'h3FC31D5708ABD544; + ReadData1E = 64'h424FEBA3BF4E9A81; + ReadData2E = 64'hC7E0000000000FFD; + ReadData3E = 64'hC1DFF70000000000; + ans = 64'hCA3FEBA3BF4EBA67; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -70024,202 +21429,7 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"548963\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC70000007F7FFFFF; - ReadData3E = 64'hFFD000047FFFFFFF; - ans = 64'hFFD000047FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"549269\n"); - end - ReadData1E = 64'h3A5FFFF007FFFFFE; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'hBFD0000000000000; - ans = 64'hBFD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"549575\n"); - end - ReadData1E = 64'hC040000003FFFFFB; - ReadData2E = 64'hBDA000FFFBFFFFFF; - ReadData3E = 64'hC3F1B104FF39AF76; - ans = 64'hC3F1B104FF39AF76; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"549881\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC340000000000000; - ReadData3E = 64'hB7FFE0000001FFFE; - ans = 64'hB7FFE0000001FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"550187\n"); - end - ReadData1E = 64'h7FFF8000000FFFFE; - ReadData2E = 64'hB7EDCF2899E0A641; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'h7FFF8000000FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"550493\n"); + $fwrite(fp,"548547\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; ReadData2E = 64'hC340000000000001; @@ -70258,12 +21468,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"550799\n"); + $fwrite(fp,"549548\n"); end - ReadData1E = 64'h405F100000000000; - ReadData2E = 64'h1EA0001FF7FFFFFF; - ReadData3E = 64'hC34FFFE0001FFFFF; - ans = 64'hC34FFFE0001FFFFF; + ReadData1E = 64'hC34FFFFDFDFFFFFF; + ReadData2E = 64'hF8F000000001FFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -70297,207 +21507,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"551105\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h41D55E87D7361155; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"551411\n"); - end - ReadData1E = 64'h43C0FFFFFFFFFFF0; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'h027FFFFFFBFFFFFC; - ans = 64'hC720FFFFFFFFFFEF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"551717\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hC1A000000000FEFF; - ReadData3E = 64'hBFD0FFFDFFFFFFFF; - ans = 64'hBFD0FFFDFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"552023\n"); - end - ReadData1E = 64'hFFF84054BAD6D8D0; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'h3CA0000000000001; - ans = 64'hFFF84054BAD6D8D0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"552329\n"); - end - ReadData1E = 64'h001F800000000004; - ReadData2E = 64'h40CFFFFFFFF7FEFE; - ReadData3E = 64'hC3DFFFBBFFFFFFFE; - ans = 64'hC3DFFFBBFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"552635\n"); + $fwrite(fp,"550549\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'hBFD000000800000F; - ans = 64'hBFD000000800000F; + ReadData3E = 64'h4101EFFFFFFFFFFF; + ans = 64'h4101EFFFFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -70531,12 +21546,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"552941\n"); + $fwrite(fp,"551550\n"); end - ReadData1E = 64'hBFBFFFBFFFFDFFFF; - ReadData2E = 64'h80200FFFFFFFFFFB; - ReadData3E = 64'h3FFFFFFFFFFFFFFE; - ans = 64'h3FFFFFFFFFFFFFFE; + ReadData1E = 64'hC00C59581755420D; + ReadData2E = 64'h29A00BFFFFFFFFFE; + ReadData3E = 64'hC1DFFFFFF8002000; + ans = 64'hC1DFFFFFF8002000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -70570,12 +21585,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"553247\n"); + $fwrite(fp,"552551\n"); + end + ReadData1E = 64'h442FF9FFFFFFFFFE; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"553552\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'hBFD0000000000000; - ans = 64'hC010FFFFFFFFFFFF; + ReadData2E = 64'hB6E80000000FFFFF; + ReadData3E = 64'h43C7CC8A627B6196; + ans = 64'h43C7CC8A627B6196; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -70609,89 +21663,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"553553\n"); + $fwrite(fp,"554553\n"); end - ReadData1E = 64'h2EE0003FFFFC0000; - ReadData2E = 64'hC3C00000FFF7FFFF; - ReadData3E = 64'h3E8FFFFFFFFFFFEF; - ans = 64'h3E8FFFFFFFFFFFEF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"553859\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h431C03FFFFFFFFFF; - ReadData3E = 64'h7FE0000000000000; - ans = 64'h7FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"554165\n"); - end - ReadData1E = 64'hC030000000000FBF; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'h3FDEE29310989E27; + ReadData1E = 64'hC1F211E13E88B1A6; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hBF8F7FFFFFDFFFFF; ans = 64'h7FF0000000000000; FrmE = 3'b000; #10 @@ -70726,12 +21702,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"554471\n"); + $fwrite(fp,"555554\n"); end ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h44D000003FFDFFFE; - ReadData3E = 64'h3D2000000000FFBF; - ans = 64'h3D2000000000FFBF; + ReadData2E = 64'hC3CFF8007FFFFFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h83FFF8007FFFFFFD; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -70765,12 +21741,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"554777\n"); + $fwrite(fp,"556555\n"); end - ReadData1E = 64'h401FF7BFFFFFFFFE; - ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'hFFF0000000000000; + ReadData1E = 64'hD68000000000FEFE; + ReadData2E = 64'hC34F77FFFFFFFFFE; + ReadData3E = 64'hC330080000000006; + ans = 64'h59DF78000001F583; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -70804,597 +21780,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"555083\n"); - end - ReadData1E = 64'h401FFFBFFFFFFFFC; - ReadData2E = 64'hC0000000000100FF; - ReadData3E = 64'h3FDB0C7F1AA6DCB7; - ans = 64'hC02F275C072CCB10; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"555389\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'h7FDFC00003FFFFFF; - ans = 64'h7FDFC00003FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"555695\n"); - end - ReadData1E = 64'hC3EFFFFFEFFFDFFE; - ReadData2E = 64'hB7F0000000FFEFFF; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"556001\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'h3CA0000000000001; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"556307\n"); - end - ReadData1E = 64'h380FFFBFFE000000; - ReadData2E = 64'h47F1301F5B57A021; - ReadData3E = 64'hC7FFFF800000000F; - ans = 64'hC7FFFF800000000F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"556613\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h002FFFFFFFFFFEF6; - ReadData3E = 64'hC340000000000001; - ans = 64'hC340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"556919\n"); - end - ReadData1E = 64'h73D9FCECC51EB691; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'hC1C0000000003FBE; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"557225\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'h403000001FFFFFFD; - ReadData3E = 64'h480007FFEFFFFFFF; - ans = 64'h480007FFEFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"557531\n"); - end - ReadData1E = 64'h40D0007FFFE00000; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"557837\n"); - end - ReadData1E = 64'hC03243999D53ABF6; - ReadData2E = 64'h345000002001FFFF; - ReadData3E = 64'hB8900403FFFFFFFF; - ans = 64'hB8900403FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"558143\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'hBFCA7F53316EAB07; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"558449\n"); - end - ReadData1E = 64'h4020080000000FFE; - ReadData2E = 64'h755FFFFFFFFF5FFF; - ReadData3E = 64'h3FE0000000000001; - ans = 64'h759007FFFFFFBFD5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"558755\n"); - end - ReadData1E = 64'h001FFFFFFFFFFFFE; - ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"559061\n"); - end - ReadData1E = 64'h3E37118D48FFBADF; - ReadData2E = 64'h3CA0000000800000; - ReadData3E = 64'h401FFFF7FFFFFFC0; - ans = 64'h401FFFF7FFFFFFC0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"559367\n"); + $fwrite(fp,"557556\n"); end ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hDB63FFF7FFFFFFFF; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'hD813FFF7FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"559673\n"); - end - ReadData1E = 64'h434000000007FFEF; ReadData2E = 64'h0000000000000000; - ReadData3E = 64'h43EFFFFFFFFFFFFF; - ans = 64'h43EFFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h800FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -71428,283 +21819,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"559979\n"); + $fwrite(fp,"558557\n"); end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h4BB2000000004000; - ReadData3E = 64'h43C5EE619EB6C788; - ans = 64'h4862000000004000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"560285\n"); - end - ReadData1E = 64'h4007000000000000; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'h8000000000000000; - ans = 64'h0000000000000003; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"560591\n"); - end - ReadData1E = 64'h002200000000003F; - ReadData2E = 64'h3FCFFFFFFF0000FE; - ReadData3E = 64'hC3CB85B401C44430; - ans = 64'hC3CB85B401C44430; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"560897\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'hAEC0000020000000; - ans = 64'hAEC0000020000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"561203\n"); - end - ReadData1E = 64'hBFC004000001FFFF; - ReadData2E = 64'hCD600000003C0000; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'h4D300400003E0EFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"561509\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'h000FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"561815\n"); - end - ReadData1E = 64'h37FFFFBFFFFFFBFE; - ReadData2E = 64'hBCAFFFFF7FFFFFBE; - ReadData3E = 64'hB28400000000001F; - ans = 64'hB4BFFFBF80037BBC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"562121\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hB800000001000FFE; + ReadData1E = 64'hBFCFF8000000007F; + ReadData2E = 64'h802DFFFFFFFF7FFE; ReadData3E = 64'hC00FFFFFFFFFFFFE; ans = 64'hC00FFFFFFFFFFFFE; FrmE = 3'b000; @@ -71740,51 +21858,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"562427\n"); - end - ReadData1E = 64'h3FD4FEF9A261B85F; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'hC1FFFFEFFFFFFFF6; - ans = 64'hC1FFFFEFFFFFFFF6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"562733\n"); + $fwrite(fp,"559558\n"); end ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h41EFFFFFFFFFF00F; - ReadData3E = 64'h7FFFFFFFFFC0001F; - ans = 64'h7FFFFFFFFFC0001F; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h4030000000020002; + ans = 64'h4030000000020002; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -71818,12 +21897,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"563039\n"); + $fwrite(fp,"560559\n"); end - ReadData1E = 64'hC3C0000000003FFD; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; + ReadData1E = 64'hBFB000000000EFFF; + ReadData2E = 64'h3FB073169080BB12; + ReadData3E = 64'h3F9FFC0000003FFF; + ans = 64'h3F9BDF3A5BDFD38B; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -71857,439 +21936,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"563345\n"); + $fwrite(fp,"561560\n"); end - ReadData1E = 64'h7FF4760C8E5F3973; - ReadData2E = 64'hCC9FFFF87FFFFFFE; - ReadData3E = 64'hB80FFE007FFFFFFE; - ans = 64'h7FFC760C8E5F3973; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"563651\n"); - end - ReadData1E = 64'h3CA0000000000000; + ReadData1E = 64'h3FBFFEFFFFFFFFF6; ReadData2E = 64'h0010000000000001; - ReadData3E = 64'h3FB0010000000007; - ans = 64'h3FB0010000000007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"563957\n"); - end - ReadData1E = 64'h403A7713E8818439; - ReadData2E = 64'h800FFFFFFFFFFFCF; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h3CAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"564263\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'h8000000000000000; - ans = 64'h0000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"564569\n"); - end - ReadData1E = 64'hC0144254342743BB; - ReadData2E = 64'hB1F20FFFFFFFFFFF; - ReadData3E = 64'hBE1FFFFFFFFFFFC1; - ans = 64'hBE1FFFFFFFFFFFC1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"564875\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h4340080000000002; - ReadData3E = 64'h4000000000000000; - ans = 64'h4008040000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"565181\n"); - end - ReadData1E = 64'hBDA000000001FF7F; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'h41C0003FFFFFFFFE; - ans = 64'h41C0003FFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"565487\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC1EFFFFE0003FFFF; - ReadData3E = 64'h4CC0807FFFFFFFFE; - ans = 64'h4CC0807FFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"565793\n"); - end - ReadData1E = 64'h6911007FFFFFFFFE; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"566099\n"); - end - ReadData1E = 64'hC25FFFFFFFFF6FFF; - ReadData2E = 64'h408FFFFFFFFC000F; - ReadData3E = 64'h41DFFFFFFFC000FF; - ans = 64'hC2FFFFF7FFFB701E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"566405\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'h405CB2EDB604D8DE; - ans = 64'h405CB2EDB604D8DE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"566711\n"); - end - ReadData1E = 64'h3ED003FF7FFFFFFF; - ReadData2E = 64'h3A0D68E6205F2D62; ReadData3E = 64'hBCA0000000000000; ans = 64'hBCA0000000000000; FrmE = 3'b000; @@ -72325,12 +21975,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"567017\n"); + $fwrite(fp,"562561\n"); end ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; + ReadData2E = 64'h90B00100000FFFFF; + ReadData3E = 64'h82C1FFFFEFFFFFFE; + ans = 64'h8D600100000FFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -72364,12 +22014,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"567323\n"); + $fwrite(fp,"563562\n"); end - ReadData1E = 64'h002FFFFFFF00000F; - ReadData2E = 64'h380000FFFFFFC000; - ReadData3E = 64'h800B8F38D5581BB9; - ans = 64'h800B8F38D5581BB9; + ReadData1E = 64'h40280FB272B912BE; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h402000400000007E; + ans = 64'h402000400000007F; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -72403,12 +22053,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"567629\n"); + $fwrite(fp,"564563\n"); end ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hBFB7317BC451054B; - ReadData3E = 64'hBFF0000000000001; - ans = 64'hBFF0000000000001; + ReadData2E = 64'h3FEBCAD01C83FEC0; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -72442,595 +22092,49 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"567935\n"); + $fwrite(fp,"565564\n"); end - ReadData1E = 64'h401FE1EDC4F937A1; + ReadData1E = 64'hC1FFFFC000001FFE; + ReadData2E = 64'h3FC92432A1B9A3BF; + ReadData3E = 64'h380FFFFFFFFFF820; + ans = 64'hC1D924005954796E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"566565\n"); + end + ReadData1E = 64'h3CA0000000000000; ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'hD8EBE3EE3DA505F1; - ans = 64'hD8EBE3EE3DA505F1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"568241\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC3E2000000004000; - ReadData3E = 64'h41EFFFFFFFFF1FFE; - ans = 64'h41EFFFFF6FFF1FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"568547\n"); - end - ReadData1E = 64'hCEAFFFFC7FFFFFFF; - ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'hC34FFFFFFFFFFFFE; - ans = 64'hCB6FFFFC7FFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"568853\n"); - end - ReadData1E = 64'h5150200000000003; - ReadData2E = 64'h41EA317A7FF8829C; - ReadData3E = 64'h3FC3FFFFFFFFFFFC; - ans = 64'h534A65DD74F873A6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"569159\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'hC38FFFF7FFFFBFFE; - ans = 64'hC38FFFF7FFFFBFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"569465\n"); - end - ReadData1E = 64'h68000003FFFFC000; - ReadData2E = 64'hB807FFFFFFFFDFFE; - ReadData3E = 64'h0010000000000001; - ans = 64'hE0180005FFFF7FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"569771\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"570077\n"); - end - ReadData1E = 64'h41EFC450BF744BAF; - ReadData2E = 64'h327C8450FAFD9B42; - ReadData3E = 64'hC3E07FDFFFFFFFFF; - ans = 64'hC3E07FDFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"570383\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hBFE0000000FBFFFF; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h3FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"570689\n"); - end - ReadData1E = 64'h3CA0000000000017; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'h41FFFFFFE0000007; - ans = 64'h41FFFFFFE0000007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"570995\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h43D000FFF7FFFFFF; - ReadData3E = 64'h400125CBE8496822; - ans = 64'h40801225C3E84967; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"571301\n"); - end - ReadData1E = 64'h40CFFFF3FFFFFFFE; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'h4340000000000000; - ans = 64'h4340000000001000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"571607\n"); - end - ReadData1E = 64'h3E40010003FFFFFE; - ReadData2E = 64'hA40FFFFFFDFDFFFE; - ReadData3E = 64'h406000FFFFFFFBFF; - ans = 64'h406000FFFFFFFBFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"571913\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'h7FE0000000200001; - ans = 64'h7FE0000000200001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"572219\n"); - end - ReadData1E = 64'h3C3FFFFFFFF8FFFF; - ReadData2E = 64'h43D2002000000000; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'h4022001FFFFC0FF8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"572525\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3FE0000000000000; ReadData3E = 64'hC34FFFFFFFFFFFFE; ans = 64'hC34FFFFFFFFFFFFE; FrmE = 3'b000; @@ -73066,12 +22170,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"572831\n"); + $fwrite(fp,"567566\n"); end - ReadData1E = 64'hC7F0000000000000; - ReadData2E = 64'hBF9FFFDDFFFFFFFE; - ReadData3E = 64'h40DE38BD2F586C5E; - ans = 64'h479FFFDDFFFFFFFE; + ReadData1E = 64'hBB283AD31EE579BD; + ReadData2E = 64'hBFFFFFFFFFFF77FF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -73105,12 +22209,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"573137\n"); + $fwrite(fp,"568567\n"); end ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC0DFFFF7FEFFFFFF; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFE0000000007FFF; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h3FEFFFBFFFFEFFFE; + ans = 64'h3FEFFFBFFFFEFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -73144,12 +22248,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"573443\n"); + $fwrite(fp,"569568\n"); end - ReadData1E = 64'h43C0007FFFBFFFFE; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'hC789B6254B55142E; - ans = 64'hC789B6254B55142E; + ReadData1E = 64'h4344A9AB120D71B8; + ReadData2E = 64'h4038AAE8E182D3F5; + ReadData3E = 64'h47E1357D7AA0CD55; + ans = 64'h47E1357D7AA0CD55; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -73183,245 +22287,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"573749\n"); + $fwrite(fp,"570569\n"); end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3F7FFFFFFFFFDF7E; - ReadData3E = 64'hFFE2010000000000; - ans = 64'hFFE2010000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"574055\n"); - end - ReadData1E = 64'h8810000000000000; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'hC010000000000001; - ans = 64'hC010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"574361\n"); - end - ReadData1E = 64'hC3D00037FFFFFFFE; - ReadData2E = 64'h800021D5197DD041; - ReadData3E = 64'hFFEFFFFFFF800001; - ans = 64'hFFEFFFFFFF800001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"574667\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'h402ABB9F5C413B98; - ans = 64'h402ABB9F5C413B98; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"574973\n"); - end - ReadData1E = 64'hBFC000003FFFFFFF; - ReadData2E = 64'h3F503FFFFFEFFFFF; - ReadData3E = 64'hFFFFFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"575279\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'h4340000000000000; - ans = 64'h4340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"575585\n"); - end - ReadData1E = 64'hC01DFFFFEFFFFFFE; - ReadData2E = 64'h7FD07FFFFFFFFFFD; - ReadData3E = 64'hC3420FFFFFFFFFFF; + ReadData1E = 64'hC3DFFFFFEFFFFFF7; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hFFF0000000000000; ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 @@ -73456,12 +22326,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"575891\n"); + $fwrite(fp,"571570\n"); end ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hACD00000002FFFFE; - ReadData3E = 64'h3FD0000000000000; - ans = 64'h3FD0000000000000; + ReadData2E = 64'h403003FFFFEFFFFF; + ReadData3E = 64'h7E4FEC0000000000; + ans = 64'h7E4FEC0000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -73495,12 +22365,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"576197\n"); + $fwrite(fp,"572571\n"); end - ReadData1E = 64'hBE9FE20000000000; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'h381FFFFFFFFFF7BE; - ans = 64'hBE9FE20000000002; + ReadData1E = 64'h3FFFFFFFFFFFFEF0; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h3EFFFFFFFFFF801F; + ans = 64'h4000000FFFFFFF77; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -73534,12 +22404,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"576503\n"); + $fwrite(fp,"573572\n"); end ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC3F00001FEFFFFFF; - ReadData3E = 64'hC1D0FFFFFFDFFFFF; - ans = 64'hC1D10001FFE03FDF; + ReadData2E = 64'h434F000000000007; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h3FEE00000000000C; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -73573,12 +22443,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"576809\n"); + $fwrite(fp,"574573\n"); end - ReadData1E = 64'hC1FCE7CFD0B6C050; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'hC20CE7CFD096C04F; + ReadData1E = 64'hC1B000400007FFFF; + ReadData2E = 64'h4020000001FFFEFF; + ReadData3E = 64'h3FE2000001000000; + ans = 64'hC1E0004001F606FE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -73612,51 +22482,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"577115\n"); - end - ReadData1E = 64'h3F93E91553500BEA; - ReadData2E = 64'h41C0003FFFFFFDFE; - ReadData3E = 64'hBCC5DA60B1BB0238; - ans = 64'h4163E964F7A556AB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"577421\n"); + $fwrite(fp,"575574\n"); end ReadData1E = 64'h3CA0000000000000; ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'h403FFFFFFFFFF807; - ans = 64'h403FFFFFFFFFF807; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -73690,831 +22521,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"577727\n"); + $fwrite(fp,"576575\n"); end - ReadData1E = 64'hC03BFFFFFDFFFFFF; - ReadData2E = 64'h40CF7FFFBFFFFFFE; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"578033\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'hC010000000000001; - ans = 64'hC010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"578339\n"); - end - ReadData1E = 64'h4020000200000000; - ReadData2E = 64'hDFEFFEFFFFFFFDFF; - ReadData3E = 64'hC02003FFFFFFF7FE; - ans = 64'hE01FFF03FFDFFDFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"578645\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hBCAFFFEFFFFFFFF0; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBCA0000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"578951\n"); - end - ReadData1E = 64'h7FD0800200000000; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'h801FF00000000000; - ans = 64'h7FE0800200000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"579257\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h001000000003FDFF; - ReadData3E = 64'hBF40007FFFFFC000; - ans = 64'hBF40007FFFFFC000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"579563\n"); - end - ReadData1E = 64'h001014EBF46D200B; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hBFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"579869\n"); - end - ReadData1E = 64'h3FDFFFFF00000020; - ReadData2E = 64'h2B63DAD3E09AF819; - ReadData3E = 64'hBFEB93086E12EDF7; - ans = 64'hBFEB93086E12EDF7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"580175\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'h3FD00FDFFFFFFFFF; - ans = 64'h3FD00FE000000007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"580481\n"); - end - ReadData1E = 64'h37F7FFFFFFF00000; - ReadData2E = 64'h001FFFFFE00000FE; - ReadData3E = 64'hFFE0000000000001; - ans = 64'hFFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"580787\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'h4010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"581093\n"); - end - ReadData1E = 64'h801FF00000000000; - ReadData2E = 64'h6BC000009FFFFFFF; - ReadData3E = 64'hB7FEAFA4CE7A7EFB; - ans = 64'hB7FEAFA4CE7A7EFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"581399\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3F20080000000020; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'h3BD0080000000020; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"581705\n"); - end - ReadData1E = 64'h9E93DC7553D65AE9; - ReadData2E = 64'h4010000000000000; - ReadData3E = 64'hBFFFFFFEFFFFFEFF; - ans = 64'hBFFFFFFEFFFFFEFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"582011\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hFFFFFFF7F0000000; - ReadData3E = 64'h41CFFFFBFDFFFFFF; - ans = 64'hFFFFFFF7F0000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"582317\n"); - end - ReadData1E = 64'hB6BFFFFFEFFFFFBF; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h3FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"582623\n"); - end - ReadData1E = 64'h3C9FFFF7FFFF7FFF; - ReadData2E = 64'h41D437651490379B; - ReadData3E = 64'h3DD0000FFFFFFEFF; - ans = 64'h3E84396008B6A199; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"582929\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'h80008007FFFFFFFF; - ans = 64'h3CCFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"583235\n"); - end - ReadData1E = 64'hBF783D0BB5184AF6; - ReadData2E = 64'hC06FFFFFFE00001E; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'h4350000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"583541\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hBFFFFFFFFFFFFFFA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"583847\n"); - end - ReadData1E = 64'hC7FFFFFFFFFE7FFF; - ReadData2E = 64'hC010000000000FFF; - ReadData3E = 64'h43C00002FFFFFFFF; - ans = 64'h481FFFFFFFFE9FFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"584153\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hCA00001FFFFFEFFE; + ReadData1E = 64'hC34F24B48D2AF3E7; + ReadData2E = 64'h7FEF7FE000000000; ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'hC6B0001FFFFFEFFE; + ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -74548,51 +22560,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"584459\n"); - end - ReadData1E = 64'h37E00007FFFFEFFE; - ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'h000B49FE64045BF1; - ans = 64'h38100007FFFFEFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"584765\n"); + $fwrite(fp,"577576\n"); end ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC16C0000001FFFFE; - ReadData3E = 64'h404FFFFBFFFFFFEF; - ans = 64'h404FFFFBFFFC7FEF; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h7FDCA6F511CA93E5; + ans = 64'h7FDCA6F511CA93E5; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -74626,12 +22599,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"585071\n"); + $fwrite(fp,"578577\n"); end - ReadData1E = 64'hBC5FFFFFFF900000; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'hBFE0000000000001; - ans = 64'hBFE1FFFFFFF90001; + ReadData1E = 64'h4170000100020000; + ReadData2E = 64'h402FFFFFFFFFE7FF; + ReadData3E = 64'h41E0004000000800; + ans = 64'h41E2004020004680; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -74665,12 +22638,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"585377\n"); + $fwrite(fp,"579578\n"); end - ReadData1E = 64'h381FFFFFE01FFFFF; - ReadData2E = 64'hC34FFFFF007FFFFF; - ReadData3E = 64'hBFBBFFF7FFFFFFFF; - ans = 64'hBFBBFFF7FFFFFFFF; + ReadData1E = 64'h40900FFFFFFFFFFF; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h4010000000000000; + ans = 64'h40B013FFFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -74704,12 +22677,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"585683\n"); + $fwrite(fp,"580579\n"); end ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'h3F86422413F8A4BC; - ans = 64'h3FF02C844827F14A; + ReadData2E = 64'h33D00003FDFFFFFE; + ReadData3E = 64'hC0AF8003FFFFFFFE; + ans = 64'hC0AF8003FFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -74743,12 +22716,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"585989\n"); + $fwrite(fp,"581580\n"); end - ReadData1E = 64'h3E6FFFFFFFFF0000; - ReadData2E = 64'h426118431D11305B; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'h40E117431D10A799; + ReadData1E = 64'hBFBFFFFFFFFFFFFA; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h402FDFFFFFFFFFF7; + ans = 64'h402DDFFFFFFFFFF7; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -74782,12 +22755,90 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"586295\n"); + $fwrite(fp,"582581\n"); + end + ReadData1E = 64'h3CA0000000000000; + ReadData2E = 64'h802EEC253C787020; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"583582\n"); + end + ReadData1E = 64'h380FFFFFDFFBFFFF; + ReadData2E = 64'hB7FFFEFFFFFFFEFF; + ReadData3E = 64'h4000FFFFFFFFFFFF; + ans = 64'h4000FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"584583\n"); end ReadData1E = 64'h3CA0000000000000; ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h4008000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -74821,12 +22872,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"586601\n"); + $fwrite(fp,"585584\n"); end - ReadData1E = 64'hD890000000000050; - ReadData2E = 64'hBF6FFFFBFFFFFEFF; - ReadData3E = 64'h47EFDFFFFFFFFFFD; - ans = 64'h580FFFFBFFFFFF9F; + ReadData1E = 64'hBCA013FFFFFFFFFF; + ReadData2E = 64'hBFCFFFFFFFFFFF60; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -74860,284 +22911,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"586907\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h4000040000000000; - ReadData3E = 64'h0000000000000000; - ans = 64'h3CB0040000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"587213\n"); - end - ReadData1E = 64'hFFF7FFFFFFFFFDFE; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'hBCA0007FF0000000; - ans = 64'hFFFFFFFFFFFFFDFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"587519\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3FDFFFFFC0200000; - ReadData3E = 64'hBFCF31C105642E15; - ans = 64'hBFCF31C105642E13; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"587825\n"); - end - ReadData1E = 64'hBD80000000FFFFF6; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'hFD70000000FFFFF6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"588131\n"); - end - ReadData1E = 64'h3FEC96403447C6AD; - ReadData2E = 64'h0002000000000008; - ReadData3E = 64'hBFE00006FFFFFFFF; - ans = 64'hBFE00006FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"588437\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'h3F2FFFC1FFFFFFFF; - ans = 64'h7C90000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"588743\n"); - end - ReadData1E = 64'hB4E1E8C057F4DF36; - ReadData2E = 64'h4039B6117BCEDD18; - ReadData3E = 64'h4010000000000000; - ans = 64'h4010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"589049\n"); + $fwrite(fp,"586585\n"); end ReadData1E = 64'h3CA0000000000000; ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'hBFE0000000000001; + ReadData3E = 64'hC1E59F636B66266B; ans = 64'h7C90000000000001; FrmE = 3'b000; #10 @@ -75172,12 +22950,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"589355\n"); + $fwrite(fp,"587586\n"); end - ReadData1E = 64'hC346816BDCBFF1FE; - ReadData2E = 64'h30C000000401FFFF; - ReadData3E = 64'hB7FFC3FFFFFFFFFF; - ans = 64'hB7FFC3FFFFFFFFFF; + ReadData1E = 64'h4030E1A52FFE4269; + ReadData2E = 64'h41E000FFFFFFFDFF; + ReadData3E = 64'hC8002DC82CF9D928; + ans = 64'hC8002DC82CF9D928; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -75211,10 +22989,127 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"589661\n"); + $fwrite(fp,"588587\n"); + end + ReadData1E = 64'h2D6000003FFFFFEF; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h6D6000003FFFFFEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"589588\n"); end ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC7FFFFFFC7FFFFFF; + ReadData2E = 64'hB81FFFFDFFFFFFFD; + ReadData3E = 64'hB599D2670423B26E; + ans = 64'hB599D3670413B26E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"590589\n"); + end + ReadData1E = 64'h3FCFFFFF77FFFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'hBFE2FFFFFFFFFFFF; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"591590\n"); + end + ReadData1E = 64'h3CA0000000000000; + ReadData2E = 64'h43D6B36D4753FA85; ReadData3E = 64'h7FF0000000000001; ans = 64'h7FF8000000000001; FrmE = 3'b000; @@ -75250,89 +23145,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"589967\n"); + $fwrite(fp,"592591\n"); end - ReadData1E = 64'hBDA000010000000E; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'h4E3FFFFFFFFFFBFC; - ans = 64'hFDA000010000000D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"590273\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3FE0003BFFFFFFFF; - ReadData3E = 64'h3F1FFFFFFFFFF87F; - ans = 64'h3F20000000000440; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"590579\n"); - end - ReadData1E = 64'hC2D00001FFFFF7FE; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ReadData1E = 64'h7FDFFFFFFF8000FF; + ReadData2E = 64'hC3F0100000000002; + ReadData3E = 64'h39300DFFFFFFFFFE; ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 @@ -75367,597 +23184,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"590885\n"); - end - ReadData1E = 64'hCDE3FFFFFFF7FFFE; - ReadData2E = 64'hC00111153EA8B7A3; - ReadData3E = 64'hCC7FF7FFFEFFFFFF; - ans = 64'h4DF5555A6E525D00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"591191\n"); + $fwrite(fp,"593592\n"); end ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'hC3CE07315524DA3F; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"591497\n"); - end - ReadData1E = 64'hBFC0000FFFFFE000; - ReadData2E = 64'h948FFFFF5FFFFFFF; - ReadData3E = 64'hC000000000000001; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"591803\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"592109\n"); - end - ReadData1E = 64'h88DAAC772E18D0E4; - ReadData2E = 64'h37EC230E5E47728C; - ReadData3E = 64'h43F1000000400000; - ans = 64'h43F1000000400000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"592415\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h402CF1C09BD3F810; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"592721\n"); - end - ReadData1E = 64'hC37FFFFFFF00000F; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'h3FBFFBFFFFFF7FFE; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"593027\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hDB1FFFFFFFF00080; - ReadData3E = 64'hBE52000000000040; - ans = 64'hD7CFFFFFFFF00080; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"593333\n"); - end - ReadData1E = 64'h3560000000408000; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"593639\n"); - end - ReadData1E = 64'hBF1FFE07FFFFFFFF; - ReadData2E = 64'hC1D0000004000FFE; - ReadData3E = 64'hB6CFFFFFFF040000; - ans = 64'h40FFFE0807FFA1F9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"593945\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'h4BEFFFFFA0000000; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"594251\n"); - end - ReadData1E = 64'hFFEEC7E41D48D9E4; - ReadData2E = 64'h403E000000000008; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"594557\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hBCAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"594863\n"); - end - ReadData1E = 64'hC7FFFFFF00000004; - ReadData2E = 64'hBFDEFFEFFFFFFFFF; - ReadData3E = 64'hC1CFFFFE20000000; - ans = 64'h47EEFFEF08008003; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"595169\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC04FFFFFFFFBFFFE; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'h434FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"595475\n"); - end - ReadData1E = 64'hC1C0008007FFFFFF; ReadData2E = 64'h8000000000000001; - ReadData3E = 64'hC6B4F3502E84A07B; - ans = 64'hC6B4F3502E84A07B; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -75991,1336 +23223,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"595781\n"); + $fwrite(fp,"594593\n"); end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3FEBFFFFFFFFFBFF; - ReadData3E = 64'hB80A388A566C4856; - ans = 64'h3C9BFFFFFFFFFBFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"596087\n"); - end - ReadData1E = 64'hDFEFC007FFFFFFFF; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'h8010000000000001; - ans = 64'h200FC007FFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"596393\n"); - end - ReadData1E = 64'h3FB00000003DFFFF; - ReadData2E = 64'hC022000000000FFE; - ReadData3E = 64'h7FD04FFFFFFFFFFF; - ans = 64'h7FD04FFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"596699\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'h40000000000807FE; - ans = 64'h40000000000807FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"597005\n"); - end - ReadData1E = 64'h00200000003FFFF7; - ReadData2E = 64'h03BB6A461A67FAB0; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hBFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"597311\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h3CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"597617\n"); - end - ReadData1E = 64'h5720000080001FFE; - ReadData2E = 64'h3FDFFFFFF00007FE; - ReadData3E = 64'hB80FF80003FFFFFF; - ans = 64'h57100000780023BD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"597923\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hCBBFFFFFFFFF07FF; - ReadData3E = 64'hC340000000000000; - ans = 64'hC86FFFFFFFFF07FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"598229\n"); - end - ReadData1E = 64'h800FFFEFFFFFFFF6; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'hC3D20000003FFFFF; - ans = 64'hC3D20000003FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"598535\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC00000001FFFF800; - ReadData3E = 64'h5388000000000007; - ans = 64'h5388000000000007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"598841\n"); - end - ReadData1E = 64'hFFDFDFFFFFFFFFFA; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h400FDFFFFFFFFFF9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"599147\n"); - end - ReadData1E = 64'h38152BAF87CCD661; - ReadData2E = 64'hC80FFFFFFFFFE000; - ReadData3E = 64'h3816D0CC103DB538; - ans = 64'hC0352BAF87CCC135; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"599453\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'h41C0040000000100; - ans = 64'h41C0040000000100; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"599759\n"); - end - ReadData1E = 64'hC7FFFF8100000000; - ReadData2E = 64'hC060000000001FFC; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h486FFF8100003FF7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"600065\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'h8010000000000001; - ans = 64'h8010000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"600371\n"); - end - ReadData1E = 64'hC00F0000000003FF; - ReadData2E = 64'h3FA07FFFFFFFFEFF; - ReadData3E = 64'h41FA412950FB1DC1; - ans = 64'h41FA412950F91E41; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"600677\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h47FC3AA54E792590; - ReadData3E = 64'h4010000000000001; - ans = 64'h44AC3AA54E792590; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"600983\n"); - end - ReadData1E = 64'hC7E000FFFFFFBFFF; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'h3FE744AF1E7842FB; - ans = 64'h449000FFFFFFBFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"601289\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC96FFFFFEFFFFFFF; - ReadData3E = 64'hC1FB8000D97D3B15; - ans = 64'hC61FFFFFEFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"601595\n"); - end - ReadData1E = 64'hC34DDFFFFFFFFFFF; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"601901\n"); - end - ReadData1E = 64'h4080000000000FEF; - ReadData2E = 64'hC1E3A3F229A0185E; - ReadData3E = 64'hC3CFFFFFFFFFFFF5; - ans = 64'hC3D000004E8FC8A1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"602207\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'hC801FFFFFFFFFF7F; - ans = 64'hC801FFFFFFFFFF7F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"602513\n"); - end - ReadData1E = 64'hBFCFFBFFFFFFF000; - ReadData2E = 64'hBFC00FFFFBFFFFFF; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hBFCBFC8080FFE204; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"602819\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'hB95FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"603125\n"); - end - ReadData1E = 64'h40DFFFFFFFFFBDFF; - ReadData2E = 64'hC1E000000047FFFE; - ReadData3E = 64'hC000000000000202; - ans = 64'hC2D000000047DF7D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"603431\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h40D00000000003FF; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hC00FFFFFFFFFEFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"603737\n"); - end - ReadData1E = 64'hC0310003FFFFFFFF; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'hBB8FFC000000007F; - ans = 64'h40110003FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"604043\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h43D0000004000003; - ReadData3E = 64'hBDF0010000200000; - ans = 64'h4080000003FFF802; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"604349\n"); - end - ReadData1E = 64'h4B40000000000408; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"604655\n"); - end - ReadData1E = 64'h3800002007FFFFFE; - ReadData2E = 64'h41EFFF7F7FFFFFFF; - ReadData3E = 64'h403000000000007E; - ans = 64'h403000000000007E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"604961\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'h402FFFB7FFFFFFFF; - ans = 64'h402FFFB7FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"605267\n"); - end - ReadData1E = 64'h3FCF03FFFFFFFFFF; - ReadData2E = 64'hBFEFFFFFDFFBFFFE; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'hBFCF03FFE0F81F75; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"605573\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"605879\n"); - end - ReadData1E = 64'hC01000000000FFFE; - ReadData2E = 64'h380FFFFFF7FFFFFE; - ReadData3E = 64'h41F00FFFFFFFFFFE; - ans = 64'h41F00FFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"606185\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3AEFDFFBFFFFFFFF; + ReadData1E = 64'h37F000001FFFFFF7; + ReadData2E = 64'hC34AF5FFEA99676E; ReadData3E = 64'h3FFFFFFFFFFFFFFE; ans = 64'h3FFFFFFFFFFFFFFE; FrmE = 3'b000; @@ -77356,51 +23262,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"606491\n"); - end - ReadData1E = 64'hBFFFFFFFFDFEFFFF; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'hC2A0000008000200; - ans = 64'hC2A0000008000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"606797\n"); + $fwrite(fp,"595594\n"); end ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h41EFFFFE000003FF; - ReadData3E = 64'h48A0080020000000; - ans = 64'h48A0080020000000; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'hBEFC475E71153E4C; + ans = 64'hBEFC475E71153E4C; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -77434,12 +23301,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"607103\n"); + $fwrite(fp,"596595\n"); end - ReadData1E = 64'h40700000000FFF7F; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; + ReadData1E = 64'hBFCFFFFFF7BFFFFF; + ReadData2E = 64'h00207FFF7FFFFFFE; + ReadData3E = 64'hB9BFE20000000000; + ans = 64'hB9BFE20000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -77473,441 +23340,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"607409\n"); + $fwrite(fp,"597596\n"); end - ReadData1E = 64'hC00FFFC0007FFFFF; - ReadData2E = 64'hC3F0040000000008; - ReadData3E = 64'hB659C33D767BD014; - ans = 64'h441003DFF8401007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"607715\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'hC1F2000000000FFE; - ans = 64'hC1F2000000000FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"608021\n"); - end - ReadData1E = 64'h402008FFFFFFFFFF; - ReadData2E = 64'h3242C59B272E2C9F; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'h3272D02A4E743697; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"608327\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"608633\n"); - end - ReadData1E = 64'h800FFFE00000FFFE; - ReadData2E = 64'h3FA0001001FFFFFF; - ReadData3E = 64'h43C003FFFFFFFFEF; - ans = 64'h43C003FFFFFFFFEF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"608939\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h002000000801FFFF; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"609245\n"); - end - ReadData1E = 64'hBFA5D7C957A5866C; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'h055FFFFFFFFFEFF7; - ans = 64'h3FA5D7C957A5866B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"609551\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3FBFFC0001FFFFFF; - ReadData3E = 64'h47ECC30A16FAE247; - ans = 64'h47ECC30A16FAE247; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"609857\n"); - end - ReadData1E = 64'h4031FFFFFFFFFFFD; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC350000000000004; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"610163\n"); - end - ReadData1E = 64'h3FFE33B9FA55737D; - ReadData2E = 64'h3F40800000002000; - ReadData3E = 64'h88800007FDFFFFFF; - ans = 64'h3F4F2557CA285B80; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"610469\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'hC905F36EE24991F7; - ans = 64'hC905F36EE24991F7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"610775\n"); - end - ReadData1E = 64'hC1D827F19B2DAC3D; - ReadData2E = 64'h3F6F6A8CE25E0151; + ReadData1E = 64'h43EFFFFC02000000; + ReadData2E = 64'h801FFFFFFFFFFFFE; ReadData3E = 64'h0010000000000000; - ans = 64'hC157B720B8485DBA; + ans = 64'h841FFFFC01FFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -77941,12 +23379,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"611081\n"); + $fwrite(fp,"598597\n"); end ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; + ReadData2E = 64'h7FF003FFFFFFFFFB; + ReadData3E = 64'h430FFFFF81FFFFFE; + ans = 64'h7FF803FFFFFFFFFB; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -77980,12 +23418,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"611387\n"); + $fwrite(fp,"599598\n"); end - ReadData1E = 64'h43F213A13D95B43D; - ReadData2E = 64'hC1DFFFFFF0020000; - ReadData3E = 64'h3EEFFF0000000040; - ans = 64'hC5E213A1348D04D8; + ReadData1E = 64'h67AE000200000000; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h434D4519E9CFAA28; + ans = 64'hE45E000200000002; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -78019,7 +23457,358 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"611693\n"); + $fwrite(fp,"600599\n"); + end + ReadData1E = 64'h3CA0000000000000; + ReadData2E = 64'h40E0001FDFFFFFFF; + ReadData3E = 64'hC010000000000001; + ans = 64'hC00FFFFFFFFFE002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"601600\n"); + end + ReadData1E = 64'h406FC00800000000; + ReadData2E = 64'h44797F9BEC0355F0; + ReadData3E = 64'hFFEFF7FFF8000000; + ans = 64'hFFEFF7FFF8000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"602601\n"); + end + ReadData1E = 64'h3CA0000000000000; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"603602\n"); + end + ReadData1E = 64'h434FFFFFFFC40000; + ReadData2E = 64'h3DAFFFDFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h410FFFDFFFC4003B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"604603\n"); + end + ReadData1E = 64'h3CA0000000000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hAA6006FFFFFFFFFF; + ans = 64'hBC8FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"605604\n"); + end + ReadData1E = 64'hB8AFFBFFFFFFEFFE; + ReadData2E = 64'hC9400001FFFFFFE0; + ReadData3E = 64'hC08FEFFFFFFE0000; + ans = 64'h41FFFC03BF9FEFBE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"606605\n"); + end + ReadData1E = 64'h7FFFC07FFFFFFFFE; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FFFC07FFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"607606\n"); + end + ReadData1E = 64'h3CA0000000000000; + ReadData2E = 64'h5F9FFFFFFFFF3FFF; + ReadData3E = 64'hC01FFFC0001FFFFF; + ans = 64'h5C4FFFFFFFFF3FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"608607\n"); + end + ReadData1E = 64'h3F0EFFFFFFFBFFFE; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hBFFFFFFFFFFBFFBF; + ans = 64'hC000001EFFFDFFDB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"609608\n"); end ReadData1E = 64'h3CA0000000000000; ReadData2E = 64'hFFF0000000010001; @@ -78058,12 +23847,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"611999\n"); + $fwrite(fp,"610609\n"); end - ReadData1E = 64'h37E3FFFFFFFFFFFD; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'h3FEFDFFFFBFFFFFE; - ans = 64'h3FEFDFFFFBFFFFFE; + ReadData1E = 64'hC1EDC352312F4EE3; + ReadData2E = 64'h43D7E5DDF52DDFAE; + ReadData3E = 64'hC3CFFFFFF8000FFE; + ans = 64'hC5D63A2F4893B6EE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -78097,12 +23886,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"612305\n"); + $fwrite(fp,"611610\n"); end ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h55BFFFFFFF87FFFF; - ReadData3E = 64'hC18000000000FBFE; - ans = 64'h526FFFFFFF87FFFF; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFF0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -78138,1997 +23927,8 @@ initial if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); $fwrite(fp,"612611\n"); end - ReadData1E = 64'h434DFEFFFFFFFFFE; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'hC35DFEFFFFFFFFFA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"612917\n"); - end - ReadData1E = 64'h7FE80001FFFFFFFF; - ReadData2E = 64'hD48FFFFFFFFFBFBF; - ReadData3E = 64'h001FFFF001000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"613223\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'h5CADFFFFFFFEFFFF; - ans = 64'h5CADFFFFFFFEFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"613529\n"); - end - ReadData1E = 64'hB79C1C39DCEBED2B; - ReadData2E = 64'h41E053AEA45FFB4B; - ReadData3E = 64'h8000000000000001; - ans = 64'hB98CAF3F1CD529BE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"613835\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"614141\n"); - end - ReadData1E = 64'hB35FFEFFFFFFFFEE; - ReadData2E = 64'h43CFFFFFFFF80000; - ReadData3E = 64'h41EFFF7FFBFFFFFF; - ans = 64'h41EFFF7FFBFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"614447\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hBFC0002000000007; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hBFDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"614753\n"); - end - ReadData1E = 64'hC3D242D889644CD5; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'h408FFFFFFFFFFFFF; - ans = 64'h43F242D889644CD5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"615059\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC02000017FFFFFFE; - ReadData3E = 64'h4170000FFFFFFFC0; - ans = 64'h4170000FFFFFFFC0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"615365\n"); - end - ReadData1E = 64'h7FE0FFFFF8000000; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'hC010000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"615671\n"); - end - ReadData1E = 64'h428821EC16CB5777; - ReadData2E = 64'hA0DFFF7FFFFFFBFE; - ReadData3E = 64'h402E008000000000; - ans = 64'h402E008000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"615977\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'h39F00000000201FF; - ans = 64'hBCBFFFFFFFFFFEFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"616283\n"); - end - ReadData1E = 64'hBFFFFDFFFFFFFBFF; - ReadData2E = 64'hB06800000000000F; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"616589\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'h401FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"616895\n"); - end - ReadData1E = 64'h402BFFFFFFFFFFDF; - ReadData2E = 64'h3CA000010003FFFE; - ReadData3E = 64'h3F8FFFFF03FFFFFF; - ans = 64'h3F8FFFFF0400037F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"617201\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC060000300000000; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'hBD0F800600000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"617507\n"); - end - ReadData1E = 64'hC03FFFFFFFF00000; - ReadData2E = 64'hC010000000000001; - ReadData3E = 64'hF9FFFBE000000000; - ans = 64'hF9FFFBE000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"617813\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hBFFFFFFFFFEFFF80; - ReadData3E = 64'h3FEFFC1FFFFFFFFF; - ans = 64'h3FEFFC1FFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"618119\n"); - end - ReadData1E = 64'h4F98000000000010; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'h4000000000000001; - ans = 64'hCFC800000000000F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"618425\n"); - end - ReadData1E = 64'hC05FFFFFFE000001; - ReadData2E = 64'h4CDFFDFFFFFFC000; - ReadData3E = 64'h38000000000001FF; - ans = 64'hCD4FFDFFFDFFE001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"618731\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'hB7E07FFFEFFFFFFF; - ans = 64'hBCCFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"619037\n"); - end - ReadData1E = 64'h41D05FFFFFFFFFFF; - ReadData2E = 64'hB7E0400001FFFFFF; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"619343\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'hC010000000000000; - ans = 64'hC010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"619649\n"); - end - ReadData1E = 64'h80400000003FFEFE; - ReadData2E = 64'hA979AC1965929EB1; - ReadData3E = 64'hAD5FFF8000040000; - ans = 64'hAD5FFF8000040000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"619955\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h802FF8007FFFFFFF; - ReadData3E = 64'hBCA0000000000000; - ans = 64'hBCA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"620261\n"); - end - ReadData1E = 64'hAFBFFFF77FFFFFFF; - ReadData2E = 64'hC340000000000000; - ReadData3E = 64'h3D700100000000FF; - ans = 64'h3D700100000000FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"620567\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h84E6EACDC3A87267; - ReadData3E = 64'hC1C400FFFFFFFFFF; - ans = 64'hC1C400FFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"620873\n"); - end - ReadData1E = 64'hC3CFF800000000FE; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'h471FF80000000100; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"621179\n"); - end - ReadData1E = 64'hC13FC000007FFFFF; - ReadData2E = 64'hFFE2000FFFFFFFFF; - ReadData3E = 64'h002A87E3D45EB225; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"621485\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'h37FFFE00007FFFFF; - ans = 64'hBFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"621791\n"); - end - ReadData1E = 64'hC7E0000000000FFF; - ReadData2E = 64'h047FFFF7FF7FFFFE; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"622097\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'h4000000000000001; - ans = 64'h3CD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"622403\n"); - end - ReadData1E = 64'h40D02007FFFFFFFF; - ReadData2E = 64'hC2D0000010000000; - ReadData3E = 64'h3F8FF800000000FF; - ans = 64'hC3B02008102007FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"622709\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h002007FFF7FFFFFE; - ReadData3E = 64'h0010000000000001; - ans = 64'h0010000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"623015\n"); - end - ReadData1E = 64'h079F657DBB247EA0; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'hC25FFFFFBFFFFFDF; - ans = 64'hC78F657DBB247EA0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"623321\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hBEEFFFFFEFFFFEFE; - ReadData3E = 64'hC3C9C7B1F71A5415; - ans = 64'hC3C9C7B1F71A5415; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"623627\n"); - end - ReadData1E = 64'h4030003FFFFFE000; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"623933\n"); - end - ReadData1E = 64'h381FFDFFFFFFFFF7; - ReadData2E = 64'h8013948FB121E71F; - ReadData3E = 64'h411CAEB412B45C02; - ans = 64'h411CAEB412B45C02; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"624239\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'h403007E000000000; - ans = 64'hFC90000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"624545\n"); - end - ReadData1E = 64'hBFEEFFFFFFFEFFFF; - ReadData2E = 64'h69A22FBA6F273FE0; - ReadData3E = 64'h4340000000000001; - ans = 64'hE9A19E3C9BAD7463; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"624851\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'hFC9FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"625157\n"); - end - ReadData1E = 64'hBFF0400002000000; - ReadData2E = 64'hBB10000000020007; - ReadData3E = 64'hC1D3FFFF7FFFFFFF; - ans = 64'hC1D3FFFF7FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"625463\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h37EFFFEFFFFDFFFF; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'h349FFFEFFFFDFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"625769\n"); - end - ReadData1E = 64'hBE01000000100000; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'hBFD79D33FB7309A1; - ans = 64'h7E010000000FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"626075\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h3FF0008000007FFE; - ReadData3E = 64'hC00D7B1E10F4ADFA; - ans = 64'hC00D7B1E10F4ADFA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"626381\n"); - end - ReadData1E = 64'h434000000011FFFF; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'hBFE0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"626687\n"); - end - ReadData1E = 64'h3F26F62E6A714B72; - ReadData2E = 64'hBFC0803FFFFFFFFF; - ReadData3E = 64'h7FD72CEED46BAEAA; - ans = 64'h7FD72CEED46BAEAA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"626993\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'hDBAEFFFFF0000000; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"627299\n"); - end - ReadData1E = 64'h8332000010000000; - ReadData2E = 64'h4010001FFFF00000; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"627605\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"627911\n"); - end - ReadData1E = 64'h510000200FFFFFFF; - ReadData2E = 64'hC1E000003FFFFFF7; - ReadData3E = 64'hB80FFFFFFE000002; - ans = 64'hD2F0002050008036; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"628217\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h480FFFFDFFFE0000; + ReadData1E = 64'hA333A1B8F786C499; + ReadData2E = 64'h3E6FFFFF007FFFFE; ReadData3E = 64'hFFFFFFFFFFFFFFFE; ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; @@ -80164,11 +23964,518 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"628523\n"); + $fwrite(fp,"613612\n"); end - ReadData1E = 64'h380FFFFDE0000000; + ReadData1E = 64'h3CA0000000000000; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'h402761AE7935D38D; + ans = 64'h402761AE7935D38D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"614613\n"); + end + ReadData1E = 64'h410FFFFFFFF7F7FF; + ReadData2E = 64'h3F8E35FC19ECFFB6; + ReadData3E = 64'h434FFFFFFFF0FFFF; + ans = 64'h434FFFFFFFF1078C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"615614\n"); + end + ReadData1E = 64'hF25FFFFFFE400000; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'h727FFFFFFE400002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"616615\n"); + end + ReadData1E = 64'h3CA0000000000000; + ReadData2E = 64'hA6BFFC0000400000; + ReadData3E = 64'h3B4FFF0400000000; + ans = 64'h3B4FFF0400000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"617616\n"); + end + ReadData1E = 64'h43CFFFFDFBFFFFFE; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'hBFBBFFF7FFFFFFFE; + ans = 64'hC71FFFFDFBFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"618617\n"); + end + ReadData1E = 64'h3CA0000000000000; + ReadData2E = 64'h3CA5B733DF714FE7; + ReadData3E = 64'h8010000000000001; + ans = 64'h3955B733DF714FE7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"619618\n"); + end + ReadData1E = 64'hB80043B3AC3E003E; + ReadData2E = 64'h434FEFFFFFFFFF7E; + ReadData3E = 64'hCB00CFD42F9FC575; + ans = 64'hCB00CFD42F9FC575; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"620619\n"); + end + ReadData1E = 64'h3CA0000000000000; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hFC90000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"621620\n"); + end + ReadData1E = 64'h3FDFFFFFC0000020; + ReadData2E = 64'h392FFFFFFFFFC200; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"622621\n"); + end + ReadData1E = 64'h3CA0000000000000; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'hBFBDAFF709D51611; + ans = 64'hFC9FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"623622\n"); + end + ReadData1E = 64'h3FBFFDFFFFFFFFFB; + ReadData2E = 64'hBFE00000000004FE; + ReadData3E = 64'h801FFFFFFFFFBFE0; + ans = 64'hBFAFFE00000009F6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"624623\n"); + end + ReadData1E = 64'hBF7000000100007F; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"625624\n"); + end + ReadData1E = 64'h3CA0000000000000; + ReadData2E = 64'h403FFFFDFFFFFF80; + ReadData3E = 64'hA97000000200007F; + ans = 64'h3CEFFFFDFFFFFF80; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"626625\n"); + end + ReadData1E = 64'hC7ED65E02A485D7D; ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'hC01FBFFFFFFF7FFF; + ReadData3E = 64'hBFC0000000001006; ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; #10 @@ -80203,634 +24510,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"628829\n"); - end - ReadData1E = 64'h3CA0000000000000; - ReadData2E = 64'h00201FFFFFFFFFFC; - ReadData3E = 64'h47F17FFFFFFFFFFE; - ans = 64'h47F17FFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"629135\n"); - end - ReadData1E = 64'h436F040000000000; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h3FD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"629441\n"); - end - ReadData1E = 64'h421FFFEFFBFFFFFF; - ReadData2E = 64'h8013FFFFFFFEFFFF; - ReadData3E = 64'h207100007FFFFFFF; - ans = 64'h207100007FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"629747\n"); + $fwrite(fp,"627626\n"); end ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'h43FFFFFFFFFC003E; - ans = 64'h43FFFFFFFFFC003E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"630053\n"); - end - ReadData1E = 64'hFFEFF7FFFF800000; - ReadData2E = 64'h3FDE5AB5F7C3CD81; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'hFFDE531F49CC71B6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"630359\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'hBFE0000000000000; - ans = 64'hBFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"630665\n"); - end - ReadData1E = 64'h400FFE000000003F; - ReadData2E = 64'hBFDDE4D607B230AB; - ReadData3E = 64'hC0235239DEB3F143; - ans = 64'hC0270E98D5FE27FB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"630971\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h38F581177512E12D; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"631277\n"); - end - ReadData1E = 64'hC03FFFFF7FFFFC00; - ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'hBE40003FFFFFFFFB; - ans = 64'hBE40003FFFFFFFFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"631583\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h43D35E20BE8A9BED; - ReadData3E = 64'h43DFF80000007FFF; - ans = 64'h43DFF80000008000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"631889\n"); - end - ReadData1E = 64'h026BEB43DDA12286; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'hBCAFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"632195\n"); - end - ReadData1E = 64'hD52FFDFFFFBFFFFF; - ReadData2E = 64'hC3F3CE1F9D970A2F; - ReadData3E = 64'h43FF8007FFFFFFFF; - ans = 64'h5933CCE2BB75947F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"632501\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'h47E000007FF7FFFF; - ans = 64'h47E000007FF7FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"632807\n"); - end - ReadData1E = 64'hBDDE688351B4049B; - ReadData2E = 64'h7FEFBFE000000000; - ReadData3E = 64'hC000000000000000; - ans = 64'hFDDE2B93E28D4ADE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"633113\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h3FD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"633419\n"); - end - ReadData1E = 64'h3FDFC00000001FFE; - ReadData2E = 64'hC1324744F5C38C98; - ReadData3E = 64'hC0000000FFF7FFFF; - ans = 64'hC12222BA6BD857C3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"633725\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBF0FE29A47D0D921; + ReadData2E = 64'h3F608000000001FF; ReadData3E = 64'hFFE0000000000001; ans = 64'hFFE0000000000001; FrmE = 3'b000; @@ -80866,12 +24549,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"634031\n"); + $fwrite(fp,"628627\n"); end - ReadData1E = 64'hF0BFFFBFFFBFFFFF; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'h3E06C8F7F58C7A61; - ans = 64'h3E06C8F7F58C7A61; + ReadData1E = 64'h40000007FFFFFDFE; + ReadData2E = 64'h43D0000000041FFF; + ReadData3E = 64'h47E7FFFFFFDFFFFF; + ans = 64'h47E7FFFFFFDFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -80905,4846 +24588,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"634337\n"); + $fwrite(fp,"629628\n"); end ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3ED8926415D98F05; - ReadData3E = 64'h3FD100000007FFFE; - ans = 64'h3FD100000007FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"634643\n"); - end - ReadData1E = 64'hBFF0000000400001; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'h8000000000800002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"634949\n"); - end - ReadData1E = 64'h480FFFFBFFFFFFF7; - ReadData2E = 64'h480FFFFFFFFFFFFE; - ReadData3E = 64'h381A32D57211B378; - ans = 64'h502FFFFBFFFFFFF5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"635255\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'h3D2692C6C6F6F414; - ans = 64'h3D2692C6C6F6F414; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"635561\n"); - end - ReadData1E = 64'h7FFFFFBFFFFFFFFE; - ReadData2E = 64'h37FFDFFFFF800000; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h7FFFFFBFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"635867\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'hBCAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"636173\n"); - end - ReadData1E = 64'hBA50000FFFFFDFFE; - ReadData2E = 64'h37FFFFEFFDFFFFFE; - ReadData3E = 64'h3FB4000000000007; - ans = 64'h3FB4000000000007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"636479\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hB06D5172C00F57DE; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'h434FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"636785\n"); - end - ReadData1E = 64'hFFFFFFF0003FFFFF; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'hFFEFFBFFFF000000; - ans = 64'hFFFFFFF0003FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"637091\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBFF0100000003FFF; - ReadData3E = 64'h402FFFEFFF7FFFFF; - ans = 64'h402FFFEFFF7FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"637397\n"); - end - ReadData1E = 64'hC7F93F6288E6DA64; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'h8010000000000000; - ans = 64'hC4B93F6288E6DA63; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"637703\n"); - end - ReadData1E = 64'hC3FFFFFFFFFFFCFF; - ReadData2E = 64'hBFDFF3DD4FECC275; - ReadData3E = 64'hFFDFF801FFFFFFFF; - ans = 64'hFFDFF801FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"638009\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'h43DFFC1FFFFFFFFF; - ans = 64'h43DFFC1FFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"638315\n"); - end - ReadData1E = 64'hC1CFFFFFFBFF7FFF; - ReadData2E = 64'h4060000207FFFFFE; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hC240000206003FBC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"638621\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'h3C80000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"638927\n"); - end - ReadData1E = 64'hFFD00001FFF00000; - ReadData2E = 64'hC340003FFFEFFFFF; - ReadData3E = 64'hBFEFFBFFFFFFF7FE; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"639233\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h7F60000000000DFF; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'h7C10000000000E00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"639539\n"); - end - ReadData1E = 64'h41DDFFFFF7FFFFFE; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'hBD8FFFFFBFFFFFFC; - ans = 64'h41BDFFFFF8000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"639845\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h404BFFFFFFFFFF7F; - ReadData3E = 64'hBE20050000000000; - ans = 64'hBE2004FC80000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"640151\n"); - end - ReadData1E = 64'hBFD00000080FFFFF; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'h0000000000000001; - ans = 64'hBFC00000080FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"640457\n"); - end - ReadData1E = 64'h3DF0000200000200; - ReadData2E = 64'h4CD000004003FFFF; - ReadData3E = 64'hC1C0008000FFFFFE; - ans = 64'h4AD0000240040A00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"640763\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'h014FFFFF7FFFBFFF; - ans = 64'h3C90000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"641069\n"); - end - ReadData1E = 64'h406FFFFFFF0000FF; - ReadData2E = 64'h41D020000000007F; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'h42501FFFFF7F20FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"641375\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'h8010000000000000; - ans = 64'h3C90000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"641681\n"); - end - ReadData1E = 64'h3BA211127EC45600; - ReadData2E = 64'h358FFFFF80004000; - ReadData3E = 64'h3FCFFFFFFFFFDFF0; - ans = 64'h3FCFFFFFFFFFDFF0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"641987\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBFB2000000000003; - ReadData3E = 64'h4010000000000000; - ans = 64'h4010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"642293\n"); - end - ReadData1E = 64'hC3CFFBFFDFFFFFFF; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'hEE6C9467FCA47D87; - ans = 64'hEE6C9467FCA47D87; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"642599\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h5EB01FF7FFFFFFFF; - ReadData3E = 64'h37E0037FFFFFFFFE; - ans = 64'h5B601FF800000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"642905\n"); - end - ReadData1E = 64'h47FC4B89B376A36D; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"643211\n"); - end - ReadData1E = 64'h3FFBFBFFFFFFFFFE; - ReadData2E = 64'hC00F00000FFFFFFF; - ReadData3E = 64'hB819596CB6C487DA; - ans = 64'hC01B1C200DFDFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"643517\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'h3FF0000000003EFF; - ans = 64'h3FF0000000003F00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"643823\n"); - end - ReadData1E = 64'hC05F7FFFEFFFFFFF; - ReadData2E = 64'h8000100000000003; - ReadData3E = 64'hBFD0000000000000; - ans = 64'hBFD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"644129\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'h0000000000000001; - ans = 64'h3CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"644435\n"); - end - ReadData1E = 64'hB7FFFFF800000008; - ReadData2E = 64'h3FFF6C3812CF83F7; - ReadData3E = 64'h811FFFFFFFFF7C00; - ans = 64'hB80F6C3037C17F4B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"644741\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBFCFC00000000010; - ReadData3E = 64'hC000000000000001; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"645047\n"); - end - ReadData1E = 64'hC03FFFFF000FFFFE; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'hB81FBFFFFFFFF000; - ans = 64'hC03FFFFF000FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"645353\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBF3FFFFF00000004; - ReadData3E = 64'h401000007DFFFFFF; - ans = 64'h401000007DFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"645659\n"); - end - ReadData1E = 64'hC1F00000000001FF; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"645965\n"); - end - ReadData1E = 64'h40154B404B0501A2; - ReadData2E = 64'h380000000003FFFE; - ReadData3E = 64'hBFEFFEFFFDFFFFFF; - ans = 64'hBFEFFEFFFDFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"646271\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'hCDC3FFEFFFFFFFFF; - ans = 64'hCDC3FFEFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"646577\n"); - end - ReadData1E = 64'h403000083FFFFFFE; - ReadData2E = 64'h43FFFFEFFEFFFFFF; - ReadData3E = 64'h3CA0000000000001; - ans = 64'h444000003F7BDFBC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"646883\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"647189\n"); - end - ReadData1E = 64'h41E0000020FFFFFE; - ReadData2E = 64'hBD4FFFFFFFDFEFFF; - ReadData3E = 64'h332FB80000000000; - ans = 64'hBF40000020EFF7FD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"647495\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h43D0000103FFFFFF; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h4080100104000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"647801\n"); - end - ReadData1E = 64'h42A01FFFFFFFFFFF; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'h43E00FFF7FFFFFFF; - ans = 64'h43E0100183FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"648107\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC3C7CB413AF78371; - ReadData3E = 64'hC02000004001FFFE; - ans = 64'hC0784B413CF79372; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"648413\n"); - end - ReadData1E = 64'hC1E0000001FBFFFF; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'h7FE0000000000000; - ans = 64'h7FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"648719\n"); - end - ReadData1E = 64'hC00FFC0000001FFF; - ReadData2E = 64'h3F3FFC000007FFFE; - ReadData3E = 64'h801352A02834F823; - ans = 64'hBF5FF80080081EF9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"649025\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'h402DFA51AAFBA1CF; - ans = 64'h402DFA51AAFBA1CF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"649331\n"); - end - ReadData1E = 64'h402D6AD405E9D0E2; - ReadData2E = 64'h4006699A3858A969; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'h40449A8611ACF7D4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"649637\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"649943\n"); - end - ReadData1E = 64'h801FFFF77FFFFFFF; - ReadData2E = 64'hC01040000000000F; - ReadData3E = 64'h2C4000FFFDFFFFFF; - ans = 64'h2C4000FFFDFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"650249\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h38003FFFF7FFFFFF; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hBFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"650555\n"); - end - ReadData1E = 64'h3B10000100000007; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'h47F0000200000003; - ans = 64'h47F0000200000003; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"650861\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC679CC0F7B01DBF2; - ReadData3E = 64'hC7F000000FFFDFFE; - ans = 64'hC7F000000FFFDFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"651167\n"); - end - ReadData1E = 64'hBCA403A0FE29F2F7; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'hC340000000000001; - ans = 64'hC340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"651473\n"); - end - ReadData1E = 64'hC7FFC603B5F552D5; - ReadData2E = 64'hC01000000800001E; - ReadData3E = 64'h40E00007FFFEFFFF; - ans = 64'h481FC603C5D854EC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"651779\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h4010000000000000; - ReadData3E = 64'hC0300000000077FE; - ans = 64'hC0300000000077FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"652085\n"); - end - ReadData1E = 64'h3CA7F3ED2FDBC84E; - ReadData2E = 64'hC806121D06A51CCD; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'hC4C08542005A4C7C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"652391\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'h7FE0000000000000; - ans = 64'h7FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"652697\n"); - end - ReadData1E = 64'h3FAFFFFFFFFFFBBE; - ReadData2E = 64'h428FFF800001FFFF; - ReadData3E = 64'h43D000080000001F; - ans = 64'h43D000080FFFC01F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"653003\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h7FD4BB6592591753; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h7C84BB6592591754; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"653309\n"); - end - ReadData1E = 64'h41EFFFFF7FFFFFDF; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'hC3CFFFFFFBFFEFFF; - ans = 64'hC3CFFFFFF7FFF00F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"653615\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h4160000200000020; - ReadData3E = 64'h3FD0000001FFFFFF; - ans = 64'h3FD000000300001F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"653921\n"); - end - ReadData1E = 64'hBAEC7B3DC3F4513A; - ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'h401FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"654227\n"); - end - ReadData1E = 64'hC7DFFFFFFF7FBFFE; - ReadData2E = 64'h001FFBFFEFFFFFFF; - ReadData3E = 64'hBFF5AE5B27D1523E; - ans = 64'hBFF5AE5B27D1523E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"654533\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'hC330001000000FFF; - ans = 64'hC330001000000FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"654839\n"); - end - ReadData1E = 64'h41D0000000007FEF; - ReadData2E = 64'hA5E040000000FFFE; - ReadData3E = 64'h8000000000000000; - ans = 64'hA7C04000000181ED; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"655145\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'hC340000000000001; - ans = 64'hC340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"655451\n"); - end - ReadData1E = 64'h7FE000007F7FFFFE; - ReadData2E = 64'hBFFFFFFFFFC00400; - ReadData3E = 64'hBFCFFFFFFFFFFCFF; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"655757\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC3C000800000007E; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hC07004800000007F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"656063\n"); - end - ReadData1E = 64'hC5B00000000FFFFD; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'h47DDFFFFFFFFDFFF; - ans = 64'hC90FFFFC401FFFF9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"656369\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC7E1FFFFFFFFFFBF; - ReadData3E = 64'h7FEFFFFBFFFFFFF0; - ans = 64'h7FEFFFFBFFFFFFF0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"656675\n"); - end - ReadData1E = 64'hC0CFFEFFFC000000; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'hC42FFEFFFBFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"656981\n"); - end - ReadData1E = 64'h40054BEC3E7261FE; - ReadData2E = 64'h4433FF2ED149427C; - ReadData3E = 64'h41E7FFFFFFFDFFFE; - ans = 64'h444A9DD0E023E7B4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"657287\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'h66DFFEFFBFFFFFFE; - ans = 64'h66DFFEFFBFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"657593\n"); - end - ReadData1E = 64'hBFEF7FFF7FFFFFFE; - ReadData2E = 64'h37E0000000FFFDFE; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"657899\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'h7C90000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"658205\n"); - end - ReadData1E = 64'hBF6FFFFFBFFFFC00; - ReadData2E = 64'hC1CFFFFFDFFFFFFF; - ReadData3E = 64'h401000000FFFFFDE; - ans = 64'h41500000CFFFFF1F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"658511\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3ED50A68C526C672; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'h3CB00002A14D18A4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"658817\n"); - end - ReadData1E = 64'hBFDFF7FFFFFFFFBF; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'hBFCEC55F3EC9F46F; - ans = 64'hFFCFF7FFFFFFFFC1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"659123\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC1272DC69C306421; - ReadData3E = 64'hB80FFBFFFFFFFFEE; - ans = 64'hBDD72DC69C306422; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"659429\n"); - end - ReadData1E = 64'hBFD078B42033B059; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'h4000000000000000; - ans = 64'hFFD078B42033B058; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"659735\n"); - end - ReadData1E = 64'h43C8703ECCDE6D0D; - ReadData2E = 64'h3DAFFFFFFFFF7FDF; - ReadData3E = 64'h8881DECC22925CB8; - ans = 64'h4188703ECCDE0B33; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"660041\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'h5760003FFF000000; - ans = 64'h7CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"660347\n"); - end - ReadData1E = 64'h3F04000000FFFFFF; - ReadData2E = 64'h7FD7FFFFFFFFFFEF; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"660653\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'h7CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"660959\n"); - end - ReadData1E = 64'h41CFFC000000003E; - ReadData2E = 64'hDFA002000007FFFF; - ReadData3E = 64'h43EFFFFFFFFFDF80; - ans = 64'hE17FFFFF800FFE3C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"661265\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3FF002000000001E; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'h3CA002000000001F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"661571\n"); - end - ReadData1E = 64'h78303FFFFFFFFFDE; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'h405000000000403E; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"661877\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC1DFFFFFFFFFFFDE; - ReadData3E = 64'h800BFFFFFFFFFFFF; - ans = 64'hBE8FFFFFFFFFFFE0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"662183\n"); - end - ReadData1E = 64'hC340000000003EFF; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'hBFF0000000000001; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"662489\n"); - end - ReadData1E = 64'hC3E0000040000FFE; - ReadData2E = 64'h4270000000003FFE; - ReadData3E = 64'h3120BFFFFFFFFFFE; - ans = 64'hC660000040004FFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"662795\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'h3E50000000001800; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"663101\n"); - end - ReadData1E = 64'hFFFFFF7FFDFFFFFF; - ReadData2E = 64'hBF8392D6EC4E306A; - ReadData3E = 64'hC34FFFFFFFFFFFFE; - ans = 64'hFFFFFF7FFDFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"663407\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'h4000000000000000; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"663713\n"); - end - ReadData1E = 64'hB6A0000008FFFFFF; - ReadData2E = 64'h001FFFFDFFFC0000; - ReadData3E = 64'h41EFFEFFFFFFFFC0; - ans = 64'h41EFFEFFFFFFFFC0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"664019\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBFD000000400001F; - ReadData3E = 64'h0010000000000000; - ans = 64'hBC80000004000020; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"664325\n"); - end - ReadData1E = 64'hBA0FFFFFFFFFFFFE; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'h380FFFFFFFF60000; - ans = 64'h380FFFFFFFF60000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"664631\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBB50007FFFFFFFFD; - ReadData3E = 64'hC1CFFFFFFDFFFFEF; - ans = 64'hC1CFFFFFFDFFFFEF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"664937\n"); - end - ReadData1E = 64'h40207FFFFFFBFFFF; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h3FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"665243\n"); - end - ReadData1E = 64'hCF2FFBFFFF000000; - ReadData2E = 64'h271FFFE00000000E; - ReadData3E = 64'h40C000007FFFFC00; - ans = 64'h40C000007FFFFC00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"665549\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'hBC4000200000007E; - ans = 64'hBC4000200000007E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"665855\n"); - end - ReadData1E = 64'h7FFF7FFF7FFFFFFF; - ReadData2E = 64'hC3E3FFFF80000000; - ReadData3E = 64'h4340000000000000; - ans = 64'h7FFF7FFF7FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"666161\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'hBFF0000000000001; - ans = 64'hBFF0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"666467\n"); - end - ReadData1E = 64'h3E2BFD12145D6BEC; - ReadData2E = 64'h3FD77C5DA6D45E1A; - ReadData3E = 64'hC3D7FFFFFFC00000; - ans = 64'hC3D7FFFFFFC00000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"666773\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC90FFFFFFFFFFFFF; - ReadData3E = 64'h8000000000000001; - ans = 64'hC5C0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"667079\n"); - end - ReadData1E = 64'hB80FFFFFF7FDFFFE; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'hBFC22F02C76C27CA; - ans = 64'hBFC22F02C76C27CA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"667385\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC1D3484EB2F79C31; - ReadData3E = 64'hBBB0000001FF7FFF; - ans = 64'hBE83484EB2F79CB2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"667691\n"); - end - ReadData1E = 64'h406FFFFFC000000F; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFDFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"667997\n"); - end - ReadData1E = 64'h4014A782EDFCB5DA; - ReadData2E = 64'hC01000001FFFFFF8; - ReadData3E = 64'hBFDFF800001FFFFE; - ans = 64'hC0352763174C3BAC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"668303\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'hC2F00080003FFFFF; - ans = 64'hC2F00080003FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"668609\n"); - end - ReadData1E = 64'hBFCB16A4DDFFFF66; - ReadData2E = 64'h480E26AB973442D3; - ReadData3E = 64'hC010000000000001; - ans = 64'hC7E985F6B4E7B914; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"668915\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h3FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"669221\n"); - end - ReadData1E = 64'hC01FFFFFFFFFF3FE; - ReadData2E = 64'h37E000009FFFFFFF; - ReadData3E = 64'hBFD001000001FFFE; - ans = 64'hBFD001000001FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"669527\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3FE3BE9E4638F42A; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"669833\n"); - end - ReadData1E = 64'hBD80000FF8000000; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'h79EFFFFFFFFFFFFF; - ans = 64'h79EFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"670139\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC1F0000000401FFF; - ReadData3E = 64'h3FE1000000001FFF; - ans = 64'h3FE0FFFF00001FFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"670445\n"); - end - ReadData1E = 64'hBFC539959DBB1BD9; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'h3FD0000000000000; - ans = 64'h3FD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"670751\n"); - end - ReadData1E = 64'hABA000FFFF800000; - ReadData2E = 64'hC090000000FFFFFE; - ReadData3E = 64'h3E1FFFFFFFFFE080; - ans = 64'h3E1FFFFFFFFFE080; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"671057\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'hC1F00001FBFFFFFF; - ans = 64'hC1F00001FBFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"671363\n"); - end - ReadData1E = 64'h3FE0000003FF7FFF; - ReadData2E = 64'hC1D00000000807FF; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'hC1C00000020787FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"671669\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFDFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"671975\n"); - end - ReadData1E = 64'hC1FC34B48347777F; - ReadData2E = 64'h41F0000000000808; - ReadData3E = 64'hC34E4805E11D8622; - ans = 64'hC3FC387D8403A958; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"672281\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3F6E674F9B9487B2; + ReadData2E = 64'h000FFFFFFFFFFFFE; ReadData3E = 64'h7FEFFFFFFFFFFFFE; ans = 64'h7FEFFFFFFFFFFFFE; FrmE = 3'b000; @@ -85780,12 +24627,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"672587\n"); + $fwrite(fp,"630629\n"); end - ReadData1E = 64'hC1BB7F6EF09742E6; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'hBFF830AAB3C2C890; - ans = 64'hBFF830AA9843599F; + ReadData1E = 64'hB7FFFE000007FFFF; + ReadData2E = 64'hFFD00002000001FF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h77DFFE03FFC803FE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -85819,7 +24666,1528 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"672893\n"); + $fwrite(fp,"631630\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h41DEFFFFFFF7FFFE; + ans = 64'h41DEFFFFFFF7FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"632631\n"); + end + ReadData1E = 64'hC190C9D4F8458B3E; + ReadData2E = 64'h4800800FFFFFFFFF; + ReadData3E = 64'hC1B0000040FFFFFF; + ans = 64'hC9A1503469DCAFDC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"633632\n"); + end + ReadData1E = 64'h3FCFFF800000FFFF; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'h3C7FFF800000FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"634633\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'h7FD1AE954686257E; + ReadData3E = 64'h4250000010000800; + ans = 64'h7C81AE954686257F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"635634\n"); + end + ReadData1E = 64'h3B4003FF7FFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'hB7F007FFFFFDFFFF; + ans = 64'h37EFFFFE0003FFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"636635\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'hC3FFBFFFEFFFFFFE; + ReadData3E = 64'h4000000000000001; + ans = 64'hC0AFBBFFF0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"637636\n"); + end + ReadData1E = 64'hB0C010001FFFFFFF; + ReadData2E = 64'h6160000003E00000; + ReadData3E = 64'h801A9EBD869DD9AE; + ans = 64'hD230100023E3E007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"638637\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"639638\n"); + end + ReadData1E = 64'h4075445663838051; + ReadData2E = 64'hBFBEFFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hC0449A33B067644E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"640639\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h3FBFFFF000200000; + ans = 64'h3FBFFFF000200004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"641640\n"); + end + ReadData1E = 64'h3FC0000220000000; + ReadData2E = 64'hD10FFF00000000FF; + ReadData3E = 64'h3800000000000FDE; + ans = 64'hD0DFFF043FDE00FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"642641\n"); + end + ReadData1E = 64'hC02FFF81FFFFFFFF; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"643642\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'h4450000004003FFF; + ReadData3E = 64'hBED907B0A8E96002; + ans = 64'h4100000003FD1F0A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"644643\n"); + end + ReadData1E = 64'h3FDFFFFFB8000000; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h580FFFF000000002; + ans = 64'h580FFFF000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"645644\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'hC16FDC0000000000; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000001FDC001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"646645\n"); + end + ReadData1E = 64'hC1EFFFFFFFFFFAFE; + ReadData2E = 64'hBFD0000FFFFBFFFE; + ReadData3E = 64'hC61FFFE0000FFFFE; + ans = 64'hC61FFFE0000FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"647646\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FE0000000000003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"648647\n"); + end + ReadData1E = 64'hC02FFFFFFFC00000; + ReadData2E = 64'hC3E0003FFEFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"649648\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h47E86920E1C94CCB; + ans = 64'h47E86920E1C94CCB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"650649\n"); + end + ReadData1E = 64'h3CA002000003FFFE; + ReadData2E = 64'h380AFD1289742F9C; + ReadData3E = 64'h43420D85A6B25E6F; + ans = 64'h43420D85A6B25E6F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"651650\n"); + end + ReadData1E = 64'hFFFA302B6AF9F998; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hFFFA302B6AF9F998; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"652651\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'hC01FFFFFE001FFFE; + ReadData3E = 64'h40601F4FAFB2F88B; + ans = 64'h40601F4FAFB2F88B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"653652\n"); + end + ReadData1E = 64'hFFE00007FFFFFDFE; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'hFFD34131592163F6; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"654653\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'hC07FFFFFFFFFBFF0; + ReadData3E = 64'h0000000000000001; + ans = 64'hBD2FFFFFFFFFBFF2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"655654\n"); + end + ReadData1E = 64'hC204F1123D319095; + ReadData2E = 64'h3FA000001000FFFF; + ReadData3E = 64'hE96DC4A72DA0AE3C; + ans = 64'hE96DC4A72DA0AE3C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"656655\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h7C90000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"657656\n"); + end + ReadData1E = 64'h438C5C0D0E7903C5; + ReadData2E = 64'hBFE75BBF138CC504; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC384B3787E497A4F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"658657\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'hC7FFFFFFFFF003FF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"659658\n"); + end + ReadData1E = 64'hCD314078084D3BB3; + ReadData2E = 64'h3E0181CECB01BFC6; + ReadData3E = 64'hC7EFFFFFFFBC0000; + ans = 64'hCB42E07649823EBA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"660659\n"); + end + ReadData1E = 64'hF78FFFFFFFE001FF; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"661660\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'h802240BEF2DC60A7; + ReadData3E = 64'hC00FFFFFFE008000; + ans = 64'hC00FFFFFFE008000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"662661\n"); + end + ReadData1E = 64'h40187C3658FEA9C1; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h434800000000003F; + ans = 64'h434800000000003F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"663662\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'hBFDFFC07FFFFFFFE; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"664663\n"); + end + ReadData1E = 64'hBFB0000010000000; + ReadData2E = 64'hC01000000FFFFFEF; + ReadData3E = 64'h41DBB12729536A77; + ans = 64'h41DBB12729636A77; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"665664\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"666665\n"); + end + ReadData1E = 64'h4057B550CE98CDD8; + ReadData2E = 64'h001E3FFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"667666\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'h51E1BEA80FABB129; + ans = 64'h51E1BEA80FABB129; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"668667\n"); + end + ReadData1E = 64'h9530BFFFFFFFFFFF; + ReadData2E = 64'hBF0FFFFFFFE00000; + ReadData3E = 64'h41F000007FDFFFFF; + ans = 64'h41F000007FDFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"669668\n"); + end + ReadData1E = 64'h7FF0000008003FFF; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'hFFF0000000000000; + ans = 64'h7FF8000008003FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"670669\n"); end ReadData1E = 64'h3CA0000000000001; ReadData2E = 64'hBF22A961D8D5A41D; @@ -85858,90 +26226,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"673199\n"); + $fwrite(fp,"671670\n"); end - ReadData1E = 64'h3FF319FB01ADB4BC; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBCBB19FB01ADB4BB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"673505\n"); - end - ReadData1E = 64'hBFD346D8CF582601; - ReadData2E = 64'hFFD0000000000DFF; - ReadData3E = 64'hC800208000000000; - ans = 64'h7FB346D8CF5836DE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"673811\n"); - end - ReadData1E = 64'h3CA0000000000001; + ReadData1E = 64'hC01FEFFFFFDFFFFF; ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'h434FFFFFEFEFFFFF; - ans = 64'h434FFFFFEFEFFFFF; + ReadData3E = 64'hC68BE957D763E738; + ans = 64'hC68BE957D763E738; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -85975,2234 +26265,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"674117\n"); - end - ReadData1E = 64'h000FFFFFFFF7FFF6; - ReadData2E = 64'hC3E0000002200000; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hBFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"674423\n"); + $fwrite(fp,"672671\n"); end ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'h3FD0000000000000; - ans = 64'h3FCFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"674729\n"); - end - ReadData1E = 64'hBFEBB35F44DCC45E; - ReadData2E = 64'hB88EA4683179AA7F; - ReadData3E = 64'hBFDA67B4157D037F; - ans = 64'hBFDA67B4157D037F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"675035\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC1EFFBFFFFFF7FFF; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"675341\n"); - end - ReadData1E = 64'hCDE000000007FFFF; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'hB8107F68833FB81B; - ans = 64'h4DD000000007FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"675647\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBD1F52A155869D56; - ReadData3E = 64'hC00000000800FFFF; - ans = 64'hC00000000800FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"675953\n"); - end - ReadData1E = 64'h47FFFFFDFFFFFF7E; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'hC7EFFFFDFFFFFF7C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"676259\n"); - end - ReadData1E = 64'hC15001FFFFFEFFFF; - ReadData2E = 64'h0010000C00000000; - ReadData3E = 64'h58700000037FFFFE; - ans = 64'h58700000037FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"676565\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'hA8B18549F87BF9E4; - ans = 64'hBC90000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"676871\n"); - end - ReadData1E = 64'h43FFFBFFFEFFFFFF; - ReadData2E = 64'h683FFFFFF8000800; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h6C4FFBFFF70107FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"677177\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBCA8000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"677483\n"); - end - ReadData1E = 64'h3FF002000000000F; - ReadData2E = 64'h401FFFFF80000002; - ReadData3E = 64'h3F339027CC991E83; - ans = 64'h40200226E0479942; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"677789\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h40A003FFFFFF0000; - ReadData3E = 64'h4340000000000001; - ans = 64'h4340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"678095\n"); - end - ReadData1E = 64'h3FDFFFF8007FFFFF; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'h4030009000000000; - ans = 64'h402F81201FFE0000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"678401\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h4025C56E3B070359; - ReadData3E = 64'h4530020000000000; - ans = 64'h4530020000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"678707\n"); - end - ReadData1E = 64'hC01FC0001FFFFFFE; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'h401FC0001FFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"679013\n"); - end - ReadData1E = 64'h43F00000000000FD; - ReadData2E = 64'h7FE001FE00000000; - ReadData3E = 64'hC340001800000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"679319\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'h7FDFFFFF7FFFFF00; - ans = 64'h7FDFFFFF7FFFFF00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"679625\n"); - end - ReadData1E = 64'hC6D0100FFFFFFFFF; - ReadData2E = 64'hC800000000800006; - ReadData3E = 64'hBFE0000000000001; - ans = 64'h4EE0101000808085; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"679931\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'hBCA0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"680237\n"); - end - ReadData1E = 64'h801FFFFFFFFFFFDD; - ReadData2E = 64'h400FDFFFFFEFFFFE; - ReadData3E = 64'hB81FFC0008000000; - ans = 64'hB81FFC0008000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"680543\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hB7E1F816D741E8FF; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"680849\n"); - end - ReadData1E = 64'hC7E200000007FFFF; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'hBFC0000020020000; - ans = 64'h47E2000000080000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"681155\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3FB081FFFFFFFFFE; - ReadData3E = 64'hBCA001FFFFFFFFE0; - ans = 64'hBC9DF3BFFFFFFFC0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"681461\n"); - end - ReadData1E = 64'h40200FBFFFFFFFFF; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'h0000000000000000; - ans = 64'hC0300FBFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"681767\n"); - end - ReadData1E = 64'h3DBD04283127119A; - ReadData2E = 64'hBFBFFF7FFFFFFEFF; - ReadData3E = 64'hC80FFBFFFFFFFFFA; - ans = 64'hC80FFBFFFFFFFFFA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"682073\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'hB7F800000003FFFF; - ans = 64'hBCB0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"682379\n"); - end - ReadData1E = 64'hED3FFFFFFDFFDFFE; - ReadData2E = 64'hC1EFF7FFFFDFFFFF; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'h6F3FF7FFFDE06005; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"682685\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'hBCB0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"682991\n"); - end - ReadData1E = 64'hBEAFFFFFFC080000; - ReadData2E = 64'h403F7FFFFFFFFDFF; - ReadData3E = 64'h3FC0000000000807; - ans = 64'h3FBFFE0800004E90; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"683297\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h9052000000000000; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h400FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"683603\n"); - end - ReadData1E = 64'h458FFFFC0000007F; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'hBFB0007FFEFFFFFE; - ans = 64'hC59FFFFC0000007F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"683909\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3FDFFFFFFF07FFFE; - ReadData3E = 64'hBF4FFFFFFFEFFEFF; - ans = 64'hBF4FFFFFFFEFFCFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"684215\n"); - end - ReadData1E = 64'h3E90001001000000; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'h7FF0000000000001; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"684521\n"); - end - ReadData1E = 64'hB7E0100000000000; - ReadData2E = 64'hC00F7FFDFFFFFFFF; - ReadData3E = 64'h3FD0000001000040; - ans = 64'h3FD0000001000040; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"684827\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'hBFCFFFFF00000100; - ans = 64'hBFCFFFFF00000110; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"685133\n"); - end - ReadData1E = 64'h3E7D7FFFFFFFFFFE; - ReadData2E = 64'hBEA0010000001000; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hBD2DA1D800001D7E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"685439\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'h0000000000000000; - ans = 64'hBCC0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"685745\n"); - end - ReadData1E = 64'hB80FFEFFFFFFF000; - ReadData2E = 64'hB80000000FFF8000; - ReadData3E = 64'hBFDFFFFFFFBC0000; - ans = 64'hBFDFFFFFFFBC0000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"686051\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h6AB32A11A3CA63BC; - ReadData3E = 64'hC000000000000000; - ans = 64'h67632A11A3CA63BD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"686357\n"); - end - ReadData1E = 64'hC2E44ABF8AECE4F4; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'h3A000FFE00000000; - ans = 64'h43044ABF8AECE4F4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"686663\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h7FDE000003FFFFFF; - ReadData3E = 64'hFFD5FFFFFFFFFFFF; - ans = 64'hFFD5FFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"686969\n"); - end - ReadData1E = 64'h82C0000180000000; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"687275\n"); - end - ReadData1E = 64'hFFDFAEFD5C6B7ABA; - ReadData2E = 64'h00220E29C3D865C9; - ReadData3E = 64'h89013D056D7CB36A; - ans = 64'hC011E0746CF21C59; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"687581\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC010000000000001; - ReadData3E = 64'h12EFFFFFFFF007FF; - ans = 64'hBCC0000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"687887\n"); - end - ReadData1E = 64'hFFF0400000000100; - ReadData2E = 64'h3F4FFBFFFFFFEFFF; - ReadData3E = 64'h3CA0000000000000; - ans = 64'hFFF8400000000100; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"688193\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'h7FF0000000000001; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"688499\n"); - end - ReadData1E = 64'h381FFFFFFD7FFFFF; - ReadData2E = 64'h403FFFE000000001; - ReadData3E = 64'hC0107FFF7FFFFFFE; - ans = 64'hC0107FFF7FFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"688805\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h3FE0080000000008; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h3FF0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"689111\n"); - end - ReadData1E = 64'h37E000007FFFFFFD; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'hBF5DF62C415BD684; - ans = 64'hBF5DF62C415BD684; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"689417\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC3FFFFFFFFFFFFFE; - ReadData3E = 64'h3F10000002FFFFFF; - ans = 64'hC0AFFFFFF7FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"689723\n"); - end - ReadData1E = 64'hCC82000000001FFF; - ReadData2E = 64'hC340000000000000; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'h4FD2000000001FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"690029\n"); - end - ReadData1E = 64'h4035714CDD36D597; - ReadData2E = 64'hD99008000001FFFF; - ReadData3E = 64'h7FDE800000000000; - ans = 64'h7FDE800000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"690335\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'h477FFE0000200000; - ans = 64'h477FFE0000200000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"690641\n"); - end - ReadData1E = 64'hDA2001FFFFFFF000; - ReadData2E = 64'hCE77EAC3142B09A3; - ReadData3E = 64'h8010000000000001; - ans = 64'h68A7EDC06C8D7719; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"690947\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"691253\n"); - end - ReadData1E = 64'hC2EFFFFFFFE0007E; - ReadData2E = 64'hBFE745C4C8FE6D0F; - ReadData3E = 64'h402000008000007E; - ans = 64'h42E745C4C8E728A6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"691559\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC00FFFEFFFFF7FFE; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h3CB0ADCC1B1A8319; + ReadData3E = 64'hBFF0000000000001; ans = 64'hBFF0000000000001; FrmE = 3'b000; #10 @@ -88237,12 +26304,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"691865\n"); + $fwrite(fp,"673672\n"); end - ReadData1E = 64'h41300010000FFFFE; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'h3FD1000000001FFE; - ans = 64'hC4900010000FFFFD; + ReadData1E = 64'h47F00407FFFFFFFE; + ReadData2E = 64'hBFE000080FFFFFFF; + ReadData3E = 64'h3FB3FFFFFFFFFFFE; + ans = 64'hC7E00410120807FD; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -88276,1102 +26343,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"692171\n"); + $fwrite(fp,"674673\n"); end ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hBFBFFFFDEFFFFFFE; - ReadData3E = 64'hBF00000000000BFF; - ans = 64'hBF000000000013FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"692477\n"); - end - ReadData1E = 64'hBCA4DA12D074B723; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'hC340000000000000; - ans = 64'hC33FFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"692783\n"); - end - ReadData1E = 64'hC0F000000000013F; - ReadData2E = 64'hC3F00080000000FF; - ReadData3E = 64'hC3E80A604241B1B5; - ans = 64'h44F00073FACFE11D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"693089\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'hA25FEFFFFFF00000; - ans = 64'hFC90000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"693395\n"); - end - ReadData1E = 64'hC1B000040FFFFFFF; - ReadData2E = 64'h429003FFFFC00000; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'hC450040410C3FFEF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"693701\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'hFC90000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"694007\n"); - end - ReadData1E = 64'h400000000000807F; - ReadData2E = 64'hBFB00000807FFFFF; - ReadData3E = 64'hC1CFFFFFFFF003FF; - ans = 64'hC1D0000000000200; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"694313\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hB81FFFFFDC000000; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'h3FDFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"694619\n"); - end - ReadData1E = 64'hC00FFFFFDFF7FFFE; - ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'hC01000010000007F; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"694925\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC3D8C4C50B88973B; - ReadData3E = 64'h3FF801FFFFFFFFFE; - ans = 64'hC088B8C40B88973D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"695231\n"); - end - ReadData1E = 64'h41F00000FFFFFFFD; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'h4010000000000001; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"695537\n"); - end - ReadData1E = 64'h4000000001FFFFFF; - ReadData2E = 64'hC03D3AEEE26F78DA; - ReadData3E = 64'h4070200001000000; - ans = 64'h4068F144487A4A53; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"695843\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'h38000000008000FF; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"696149\n"); - end - ReadData1E = 64'h801FFFFFFFFFFFFE; - ReadData2E = 64'h47F0080200000000; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"696455\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'hC340000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"696761\n"); - end - ReadData1E = 64'hB80FC10000000000; - ReadData2E = 64'hC3FFFDFFFFFFFEFF; - ReadData3E = 64'h491C0000001FFFFF; - ans = 64'h491C0000001FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"697067\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hC0327E3DBCE6EF3A; - ReadData3E = 64'hBFD0000000000000; - ans = 64'hBFD0000000000025; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"697373\n"); - end - ReadData1E = 64'hC0153BC492FC310A; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'h8000001FFEFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"697679\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'h37F139BA63EE665E; - ReadData3E = 64'hB7E0000000002040; - ans = 64'hB7E000000000203F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"697985\n"); - end - ReadData1E = 64'h47F4000000007FFF; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"698291\n"); - end - ReadData1E = 64'h00000001FFFFFF00; - ReadData2E = 64'h3FCFFF9FFFFFFFFE; - ReadData3E = 64'h381FFFFFFFFFEFBF; - ans = 64'h381FFFFFFFFFEFBF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"698597\n"); - end - ReadData1E = 64'h3CA0000000000001; - ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'hFFFF5FFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"698903\n"); - end - ReadData1E = 64'hBC505D00DA08A9C0; - ReadData2E = 64'hC6A24FCBC7903757; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"699209\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'h4010000000000001; - ans = 64'h4010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"699515\n"); - end - ReadData1E = 64'h3FFAC71E6E51C317; - ReadData2E = 64'h91B0000000003FEF; - ReadData3E = 64'h43E80957D015CBB2; - ans = 64'h43E80957D015CBB2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"699821\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hFFE000013FFFFFFF; - ReadData3E = 64'h3CA0000000000001; - ans = 64'hFCA000013FFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"700127\n"); - end - ReadData1E = 64'hC1D21AEBDD830161; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'hC03FFFFEFFFFFFFE; - ans = 64'hC03FFFFEFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"700433\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h4FC1D94A43C02150; - ReadData3E = 64'hB7E001FDFFFFFFFF; - ans = 64'h4C81D94A43C0214F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"700739\n"); - end - ReadData1E = 64'h4070B5D5F5B8F37E; - ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData2E = 64'hBFE0000000000000; ReadData3E = 64'h3FFFFFFFFFFFFFFE; ans = 64'h3FFFFFFFFFFFFFFE; FrmE = 3'b000; @@ -89407,12 +26382,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"701045\n"); + $fwrite(fp,"675674\n"); end - ReadData1E = 64'h2A20000010000800; - ReadData2E = 64'h3EDFFFFFDBFFFFFF; - ReadData3E = 64'hC01C22E3E5DB9124; - ans = 64'hC01C22E3E5DB9124; + ReadData1E = 64'hC34CB49E370082D0; + ReadData2E = 64'h41E000006FFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC53CB49EFFF0D64D; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -89446,1688 +26421,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"701351\n"); + $fwrite(fp,"676675\n"); end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'h4B2FFFFFFFB7FFFF; - ans = 64'h4B2FFFFFFFB7FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"701657\n"); - end - ReadData1E = 64'hC3F3FEFFFFFFFFFF; - ReadData2E = 64'h7FE000000002007F; - ReadData3E = 64'h7FE0000000000001; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"701963\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hC00FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"702269\n"); - end - ReadData1E = 64'h3F60000001FFFFEE; - ReadData2E = 64'h0000000007FFFFFD; - ReadData3E = 64'hC1CFFFFFFEBFFFFF; - ans = 64'hC1CFFFFFFEBFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"702575\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h401FFFFFFFFC07FF; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'h3CDFFFFFFFFC07FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"702881\n"); - end - ReadData1E = 64'hC2FFFFFE000007FF; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'h835003FFF7FFFFFF; - ans = 64'h835203FFD800007F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"703187\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h0B700000004003FF; - ReadData3E = 64'h002000FFFFFFEFFF; - ans = 64'h08300000004003FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"703493\n"); - end - ReadData1E = 64'h3FA001FFE0000000; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"703799\n"); - end - ReadData1E = 64'h4040800200000000; - ReadData2E = 64'h3FC7D33A1738766D; - ReadData3E = 64'h8000000007FFFF7F; - ans = 64'h401891D6E2597D07; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"704105\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'h8018A1B4427BBEB8; - ans = 64'h8018A1B4427BBEB6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"704411\n"); - end - ReadData1E = 64'h37FFFFF3FFFFFFFE; - ReadData2E = 64'hBFB0100000000002; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"704717\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'h3FFFFFFFFFFFFFFE; - ans = 64'h3FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"705023\n"); - end - ReadData1E = 64'hC0A000000000FFFE; - ReadData2E = 64'hC3FFFFFFFFFFFFB8; - ReadData3E = 64'hB7E01FFFFFFFFF80; - ans = 64'h44B000000000FFDA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"705329\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC34F0AC72AA75605; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'hC00F0AC72AA75604; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"705635\n"); - end - ReadData1E = 64'hB86FFFFFFF820000; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'hB8D00002000FFFFF; - ans = 64'hB8D00002000FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"705941\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h41DFFFFFE00001FF; - ReadData3E = 64'h41C3C27FCF1953FB; - ans = 64'h41C3C27FCF1953FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"706247\n"); - end - ReadData1E = 64'hBF3003F7FFFFFFFF; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'h3FE0000000000001; - ans = 64'h3FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"706553\n"); - end - ReadData1E = 64'h40AFFFFFFFBEFFFF; - ReadData2E = 64'hC1F5BB80746EB9E1; - ReadData3E = 64'h7FD7FFFFFBFFFFFE; - ans = 64'h7FD7FFFFFBFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"706859\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'h3F8FFFFEFFFFFFBF; - ans = 64'h3F8FFFFEFFFFFFBF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"707165\n"); - end - ReadData1E = 64'hC7D0007FEFFFFFFF; - ReadData2E = 64'hC18CE14D9BCE0B02; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'h496CE23489599BD5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"707471\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"707777\n"); - end - ReadData1E = 64'hC1F2000FFFFFFFFF; - ReadData2E = 64'h4020000000080008; - ReadData3E = 64'h4030003FFFFF7FFF; - ans = 64'hC222000FFFE8FF90; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"708083\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h5D100000003FFFFE; - ReadData3E = 64'h8000000000000000; - ans = 64'h59D00000003FFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"708389\n"); - end - ReadData1E = 64'hDD90003FFFFFEFFF; - ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'hBA1FF7FFFFFFE000; - ans = 64'hDA50003FFFFFEFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"708695\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h47EFF0001FFFFFFE; - ReadData3E = 64'hC1E0001FFFFFFFFF; - ans = 64'h44AFF0001FFFFEFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"709001\n"); - end - ReadData1E = 64'hB81FFFFFF7F7FFFF; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hBFDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"709307\n"); - end - ReadData1E = 64'h5CBD7EB455888645; - ReadData2E = 64'hBCA010000000007F; - ReadData3E = 64'h40E3FFFFFFFFFFFE; - ans = 64'hD96D9C3309DE0FB5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"709613\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'hBF51E1746AB411A1; - ans = 64'hBF51E1746AB410A1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"709919\n"); - end - ReadData1E = 64'h3CAFFFFFE3FFFFFF; - ReadData2E = 64'hC0200000FEFFFFFF; - ReadData3E = 64'hC010000000000000; - ans = 64'hC010000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"710225\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'h3FE0000000000001; - ans = 64'h3FE0000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"710531\n"); - end - ReadData1E = 64'h802DB8D352BF1533; - ReadData2E = 64'h3ED78B4045674233; - ReadData3E = 64'hFFDFFFBF7FFFFFFF; - ans = 64'hFFDFFFBF7FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"710837\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h43C000000000021E; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"711143\n"); - end - ReadData1E = 64'hBF9FFFFFFF000007; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'hC090001FFFFFFFFF; - ans = 64'hC090002FFFFFFF7F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"711449\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hBFA0000000007FC0; - ReadData3E = 64'h802F6FEF6C4FB6E9; - ans = 64'hBC60000000007FBF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"711755\n"); - end - ReadData1E = 64'h3F3BFBFFFFFFFFFF; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h3F2BFC0000001FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"712061\n"); - end - ReadData1E = 64'h4142CAC584401A28; - ReadData2E = 64'hFFDBAC0C29D4EE17; - ReadData3E = 64'hBFB003EAEA289C1E; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"712367\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'hBDF82D162E8BAF54; - ans = 64'hBDF82D15AE8BAF54; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"712673\n"); - end - ReadData1E = 64'h40FFFF000003FFFF; - ReadData2E = 64'hC0088FAE85CFB9E8; - ReadData3E = 64'h4000000000000001; - ans = 64'hC1188EE2085E9D5F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"712979\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hBFDFFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"713285\n"); - end - ReadData1E = 64'h9ECF000000004000; - ReadData2E = 64'h7FEFFFFBFFFFFF80; - ReadData3E = 64'hC1DFFFFF80001FFE; - ans = 64'hDECEFFFC20003F84; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"713591\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC7F5FAB540D0DED9; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"713897\n"); - end - ReadData1E = 64'hBFDFFFFFFC3FFFFE; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'hBF6E00000000003F; - ans = 64'hBFE01DFFFE1FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"714203\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h406FFFFFEFFFFDFF; - ReadData3E = 64'hB211FFFD53E700AE; - ans = 64'h3D2FFFFFEFFFFDFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"714509\n"); - end - ReadData1E = 64'h002FFFFDFFFEFFFE; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'hBCA0000000000000; + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h800FFFEFFFFFFDFF; ans = 64'hBCA0000000000000; FrmE = 3'b000; #10 @@ -91162,12 +26460,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"714815\n"); + $fwrite(fp,"677676\n"); end - ReadData1E = 64'hC7F00000020003FF; - ReadData2E = 64'hBFE00021FFFFFFFF; - ReadData3E = 64'hC0AFF800003FFFFF; - ans = 64'h47E000220200083E; + ReadData1E = 64'h36E08DEE5147D154; + ReadData2E = 64'h401FFFF00FFFFFFE; + ReadData3E = 64'hBFE0800000000004; + ans = 64'hBFE0800000000004; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -91201,12 +26499,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"715121\n"); + $fwrite(fp,"678677\n"); end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'hB81D1619C3444AAD; - ans = 64'h3CAFFFFFFFFFFFFF; + ReadData1E = 64'h37FFFFC07FFFFFFE; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -91240,12 +26538,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"715427\n"); + $fwrite(fp,"679678\n"); end - ReadData1E = 64'hC3C8F81F205C84C5; - ReadData2E = 64'hBD9000007FFFFFF7; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'h4168F81FA81D7DBA; + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'h404FFFDFFFFFDFFF; + ReadData3E = 64'hC01800000000001F; + ans = 64'hC018000000000017; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -91279,12 +26577,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"715733\n"); + $fwrite(fp,"680679\n"); end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h3CBFFFFFFFFFFFFF; + ReadData1E = 64'hBFEFFEFFFFFFFDFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h3CA5BA231D17F658; + ans = 64'h3FFFFEFFFFFFFDFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -91318,12 +26616,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"716039\n"); + $fwrite(fp,"681680\n"); end - ReadData1E = 64'hBFBFFFFFFC3FFFFF; - ReadData2E = 64'h3FBFFF0000007FFF; - ReadData3E = 64'h3F8FFFFFFFFFFE03; - ans = 64'h3EC0003BF6005000; + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'hC79E680B0F4DB3C2; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hC44E680B0F4DB3C4; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -91357,10 +26655,88 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"716345\n"); + $fwrite(fp,"682681\n"); end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC04FDFFBFFFFFFFE; + ReadData1E = 64'h4B98EBA3E512FB7B; + ReadData2E = 64'hFFE84639040D967A; + ReadData3E = 64'h42C00000010001FE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"683682\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCC7FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"684683\n"); + end + ReadData1E = 64'h37F000000FFFC000; + ReadData2E = 64'h2A592C4D064576F8; ReadData3E = 64'hC34FFFFFFFFFFFFE; ans = 64'hC34FFFFFFFFFFFFE; FrmE = 3'b000; @@ -91396,12 +26772,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"716651\n"); + $fwrite(fp,"685684\n"); end - ReadData1E = 64'h43CFFFFFFFFF3FFF; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'hBFCBFECEE81F8C27; - ans = 64'h43DFFFFFFFFF3FFE; + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hC038CBEA095A3800; + ans = 64'hC038CBEA095A3800; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -91435,12 +26811,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"716957\n"); + $fwrite(fp,"686685\n"); end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3FE0000000000036; - ReadData3E = 64'hBFC0080000200000; - ans = 64'hBFC00800001FFFFC; + ReadData1E = 64'h001FFFFFFFFFF81F; + ReadData2E = 64'h429FFFFFEFFFFFDF; + ReadData3E = 64'h3F6FF88EBD79673A; + ans = 64'h3F6FF88EBD79673A; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -91474,478 +26850,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"717263\n"); + $fwrite(fp,"687686\n"); end - ReadData1E = 64'h41EA89148D512055; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'h0010000000000001; - ans = 64'h41FA89148D512053; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"717569\n"); - end - ReadData1E = 64'h390FFFFEFFFF7FFE; - ReadData2E = 64'h40B1FFFFFFFF0000; - ReadData3E = 64'h224FFFFFF8000006; - ans = 64'h39D1FFFF6FFEB7FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"717875\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'h37F000003BFFFFFF; - ans = 64'h3CBFFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"718181\n"); - end - ReadData1E = 64'h71EFFFF7FFFFFDFF; - ReadData2E = 64'h8008BDF18FA06A55; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'h3FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"718487\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'hBCA0000000000000; - ans = 64'h3CB7FFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"718793\n"); - end - ReadData1E = 64'h3FCFFFFFFF800007; - ReadData2E = 64'h7FD3FFFFFFFFF000; - ReadData3E = 64'h380E3FFFFFFFFFFF; - ans = 64'h7FB3FFFFFFAFF004; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"719099\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h41EFFFFCFFFFFFFF; - ReadData3E = 64'h4340000000000000; - ans = 64'h4340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"719405\n"); - end - ReadData1E = 64'h3FF00000000000EE; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'h15D0000002000FFF; - ans = 64'h40000000000000EF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"719711\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hBF13670077E329FC; - ReadData3E = 64'h66EFFFEFFFFFFFFC; - ans = 64'h66EFFFEFFFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"720017\n"); - end - ReadData1E = 64'hBF00005FFFFFFFFF; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'hBF20005FFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"720323\n"); - end - ReadData1E = 64'h483FFFFFFFFF7FBE; - ReadData2E = 64'h51300400000003FE; - ReadData3E = 64'h37E0008000400000; - ans = 64'h598003FFFFFFC3CD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"720629\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'hC01000000007FFFB; - ans = 64'hC01000000007FFFA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"720935\n"); - end - ReadData1E = 64'h802FFFFFFF000080; - ReadData2E = 64'h3F00000000FFFFE0; + ReadData1E = 64'h37E00201FFFFFFFF; + ReadData2E = 64'hC340000000000000; ReadData3E = 64'hBFE0000000000000; ans = 64'hBFE0000000000000; FrmE = 3'b000; @@ -91981,12 +26889,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"721241\n"); + $fwrite(fp,"688687\n"); end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h4010000000000000; - ReadData3E = 64'h0010000000000001; - ans = 64'h3CCFFFFFFFFFFFFF; + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'hC02FE00000010000; + ReadData3E = 64'hC7E0000800003FFF; + ans = 64'hC7E0000800003FFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -92020,12 +26928,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"721547\n"); + $fwrite(fp,"689688\n"); end - ReadData1E = 64'h3F100007FFFFF7FF; - ReadData2E = 64'h5AEFFFFFFFDFFFFD; - ReadData3E = 64'hBE7FFFFFFFF7FFFB; - ans = 64'h5A100007FFEFF7F5; + ReadData1E = 64'h4B4BFFFFFF7FFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h443EDAF144C2EEFE; + ans = 64'hCEABFFFFFF7FFFFD; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -92059,12 +26967,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"721853\n"); + $fwrite(fp,"690689\n"); end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC0E00007FFF7FFFF; - ReadData3E = 64'hC010000000000001; - ans = 64'hC010000000002001; + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'h3DE01FFFFFF00000; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -92098,12 +27006,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"722159\n"); + $fwrite(fp,"691690\n"); end - ReadData1E = 64'h37FDFDFFFFFFFFFF; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'h2B9BC6B387D1ACCE; - ans = 64'h381DFE0000000001; + ReadData1E = 64'hC041CB178C90E70D; + ReadData2E = 64'h437D77BC53CFE065; + ReadData3E = 64'h3FC000000002FFFE; + ans = 64'hC3D062A14EBAC1AD; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -92137,49 +27045,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"722465\n"); + $fwrite(fp,"692691\n"); end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hBFCFC000000000FE; - ReadData3E = 64'hD65E3F9A7F0FAF49; - ans = 64'hD65E3F9A7F0FAF49; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"722771\n"); - end - ReadData1E = 64'hB800000800001000; - ReadData2E = 64'h4010000000000001; + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; ReadData3E = 64'hFFFFFFFFFFFFFFFE; ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; @@ -92215,12 +27084,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"723077\n"); + $fwrite(fp,"693692\n"); end - ReadData1E = 64'h3FBFF80004000000; - ReadData2E = 64'hC06FFFBFFFFFFFFC; - ReadData3E = 64'h40300000000007BF; - ans = 64'hC02FEF8027FFE07A; + ReadData1E = 64'h3FF000001FFE0000; + ReadData2E = 64'h37EFFFFFC0000003; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -92254,12 +27123,129 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"723383\n"); + $fwrite(fp,"694693\n"); + end + ReadData1E = 64'h3CA0000000000001; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h41FFFFFFFFF800FF; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"695694\n"); + end + ReadData1E = 64'hF7E131B35191F6EE; + ReadData2E = 64'hC01000003FFFFFDE; + ReadData3E = 64'h429FFFFFFFFFF3FE; + ans = 64'h780131B39658C410; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"696695\n"); + end + ReadData1E = 64'h41E00005FFFFFFFF; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h0010000000000000; + ans = 64'h0010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"697696\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'h4C40000000000000; - ans = 64'h4C40000000000000; + ReadData2E = 64'hB7EFFFFFEFFEFFFE; + ReadData3E = 64'h43E07FFFC0000000; + ans = 64'h43E07FFFC0000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -92293,12 +27279,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"723689\n"); + $fwrite(fp,"698697\n"); end - ReadData1E = 64'h3F30001000000007; - ReadData2E = 64'h800000000000007E; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h3FD0000000000001; + ReadData1E = 64'h3E3F6ACD6E9F5A26; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h3FEFFF0000003FFE; + ans = 64'h3FEFFF0000003FFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -92332,12 +27318,870 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"723995\n"); + $fwrite(fp,"699698\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'hC3DFF7FFFFFFFFEF; + ReadData3E = 64'hC010000000000001; + ans = 64'hC0A003FFFFFFFFF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"700699\n"); + end + ReadData1E = 64'hC95FFFFFFFFFC0FF; + ReadData2E = 64'hA92FFFFFFEFFFFFF; + ReadData3E = 64'hBF8FFFBFFF000000; + ans = 64'hBF8FFFBFFF000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"701700\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"702701\n"); + end + ReadData1E = 64'h7FF0000008007FFF; + ReadData2E = 64'h3F9FFBFFFBFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h7FF8000008007FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"703702\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h40CFFFFFFFC00FFF; + ans = 64'h40CFFFFFFFC00FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"704703\n"); + end + ReadData1E = 64'h00215E8CD8F0A008; + ReadData2E = 64'hBAFFFFEFFFFFC000; + ReadData3E = 64'h927D2C6ADA2041CA; + ans = 64'h927D2C6ADA2041CA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"705704\n"); + end + ReadData1E = 64'h47E7CF93B9204C69; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"706705\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'h3FD0000040003FFF; + ReadData3E = 64'hA457FFF800000000; + ans = 64'h3C90000040003FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"707706\n"); + end + ReadData1E = 64'h40508510E6016EBC; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'hBFE000000007FDFE; + ans = 64'h40300510E6012ECD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"708707\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'h4A9FFF7FFFFFFFC0; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h475FFF7FFFFFFFBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"709708\n"); + end + ReadData1E = 64'hBFCFFFDFFFDFFFFF; + ReadData2E = 64'h801F7FFFFFFFFFFD; + ReadData3E = 64'h40FFDFFFFFFDFFFF; + ans = 64'h40FFDFFFFFFDFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"710709\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"711710\n"); + end + ReadData1E = 64'hB7F0000040010000; + ReadData2E = 64'h8010000FFFEFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"712711\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h43E0008000000000; + ans = 64'h43E0008000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"713712\n"); + end + ReadData1E = 64'h400E51039F4CBD89; + ReadData2E = 64'h37E0000400000008; + ReadData3E = 64'h3E5F801D728E69FD; + ans = 64'h3E5F801D728E69FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"714713\n"); + end + ReadData1E = 64'hB7F03FDFFFFFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"715714\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'hC0600000047FFFFF; + ReadData3E = 64'h40D0001FFFFFFFF7; + ans = 64'h40D0001FFFFFFFF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"716715\n"); + end + ReadData1E = 64'h400FFFFFFE000001; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'hC1DFF0000000FFFF; + ans = 64'hC1DFEFFFFE00FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"717716\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'hBF171FA54519A95D; + ReadData3E = 64'h8010000000000001; + ans = 64'hBBD71FA54519A95C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"718717\n"); + end + ReadData1E = 64'h402FFFF000001FFF; + ReadData2E = 64'h3E2000400FFFFFFF; + ReadData3E = 64'h45CFFC003FFFFFFF; + ans = 64'h45CFFC003FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"719718\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h3CD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"720719\n"); + end + ReadData1E = 64'h800FFFFFF8FFFFFE; + ReadData2E = 64'h40AFFFFFF7FEFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"721720\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFF; ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'h3CDFFFFFFFFFFFFD; + ReadData3E = 64'h41BFFF80007FFFFF; + ans = 64'h41BFFF80007FFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -92371,12 +28215,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"724301\n"); + $fwrite(fp,"722721\n"); end - ReadData1E = 64'hC01FFFFFFFFDFFFB; - ReadData2E = 64'h3FE15EA250BE553F; - ReadData3E = 64'h3FBFFFFFFFFFFFED; - ans = 64'hC010DEA250BD3F52; + ReadData1E = 64'hC6AFC00000000FFF; + ReadData2E = 64'h400DA7909F36CBD7; + ReadData3E = 64'hBFE00000001FFBFE; + ans = 64'hC6CD6C417DF86D12; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -92410,207 +28254,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"724607\n"); + $fwrite(fp,"723722\n"); end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hBF79C78656F15D19; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'h400FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"724913\n"); - end - ReadData1E = 64'h41E540947D9D3B75; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'h95FFFBFFFFF7FFFF; - ans = 64'h453540947D9D3B75; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"725219\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h400FFDFFFFFFBFFF; - ReadData3E = 64'h472FFFFFFFFF81FF; - ans = 64'h472FFFFFFFFF81FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"725525\n"); - end - ReadData1E = 64'hD0FFFEFFFFFFFFC0; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"725831\n"); - end - ReadData1E = 64'h401989593420B76C; - ReadData2E = 64'hC1E4F4FFF9EF9D25; - ReadData3E = 64'h05800FFFFFFFFFC0; - ans = 64'hC210B95B4EB4B8D6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"726137\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData1E = 64'hCA6029194B707559; ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'h40322892719C4A7F; - ans = 64'h40362892719C4A7F; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hCDC029194B707558; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -92644,51 +28293,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"726443\n"); - end - ReadData1E = 64'hBF0998BC3CFD5996; - ReadData2E = 64'hEEE00007FFF7FFFF; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'h6DF998C9094EABB5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"726749\n"); + $fwrite(fp,"724723\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'hFFFFFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h3FE49625E2B36F85; + ReadData3E = 64'hC3FF2C7BDB095F61; + ans = 64'hC3FF2C7BDB095F61; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -92722,90 +28332,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"727055\n"); + $fwrite(fp,"725724\n"); end - ReadData1E = 64'h37FCCB1A46C03634; - ReadData2E = 64'h40A000400001FFFF; - ReadData3E = 64'hB7FFFFFFC00003FF; - ans = 64'h38ACC78D7334EA96; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"727361\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h40EF9E572874A507; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hBFFFFFFFFFFF030B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"727667\n"); - end - ReadData1E = 64'hC1F001FFFFFFFFFC; + ReadData1E = 64'h380FFFF7FFFFF7FF; ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'hDC492B5C56F6CEC6; - ans = 64'hFFF0000000000000; + ReadData3E = 64'h3F2759E5EFD83730; + ans = 64'h77FFFFF7FFFFF7FF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -92839,51 +28371,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"727973\n"); + $fwrite(fp,"726725\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h801FFFFFFDFFFEFF; - ReadData3E = 64'h43E9488598C128E1; - ans = 64'h43E9488598C128E1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"728279\n"); - end - ReadData1E = 64'hC030000000000037; - ReadData2E = 64'h7FE0000000000000; + ReadData2E = 64'h40A1FE0000000000; ReadData3E = 64'hFFE0000000000001; - ans = 64'hFFF0000000000000; + ans = 64'hFFE0000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -92917,12 +28410,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"728585\n"); + $fwrite(fp,"727726\n"); end - ReadData1E = 64'h97200000040001FF; - ReadData2E = 64'h7FD00000000003FF; - ReadData3E = 64'h00200001EFFFFFFF; - ans = 64'hD7000000040005FE; + ReadData1E = 64'hC1CEFB22F501B3F1; + ReadData2E = 64'h402FFF7FBFFFFFFF; + ReadData3E = 64'h43E264A514F412AC; + ans = 64'h43E264A514782811; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -92956,284 +28449,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"728891\n"); + $fwrite(fp,"728727\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'h8CCEC95BB8DB66DD; - ans = 64'h7CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"729197\n"); - end - ReadData1E = 64'h417010000FFFFFFF; - ReadData2E = 64'hC03FFC0000000000; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'hC1C00DFE0FFDFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"729503\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"729809\n"); - end - ReadData1E = 64'hBDBBFF0000000000; - ReadData2E = 64'h802FFFFFFFFC003F; - ReadData3E = 64'hC010000006FFFFFF; - ans = 64'hC010000006FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"730115\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hB7E2CD542725A7DF; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h3FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"730421\n"); - end - ReadData1E = 64'hC03000000000021F; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'h43DE0340FC13DE79; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"730727\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3FB0000000002000; - ReadData3E = 64'hC4F000000003FFF7; - ans = 64'hC4F000000003FFF7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"731033\n"); - end - ReadData1E = 64'h41D3EC019940A24C; ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; ans = 64'h7FF0000000000000; FrmE = 3'b000; #10 @@ -93268,12 +28488,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"731339\n"); + $fwrite(fp,"729728\n"); end - ReadData1E = 64'hFFE00001FFFFFFF7; - ReadData2E = 64'hC01B84F8B54B3138; - ReadData3E = 64'hBFC00FFFFFFFFFBF; - ans = 64'h7FF0000000000000; + ReadData1E = 64'h40302000000007FF; + ReadData2E = 64'hBF50100000002000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFF040C0800000A0; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -93307,12 +28527,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"731645\n"); + $fwrite(fp,"730729\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'h8930007FFFFFFFEF; - ans = 64'h7FF8000000000001; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h3FEFFFFFFFFFCFFF; + ans = 64'h7FFFFFFFFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -93346,280 +28566,7 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"731951\n"); - end - ReadData1E = 64'hBFBFFFFFFF1FFFFE; - ReadData2E = 64'h41DFDFC000000000; - ReadData3E = 64'h8010000000000000; - ans = 64'hC1AFDFBFFF20E1BE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"732257\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'hFFE0000000000001; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"732563\n"); - end - ReadData1E = 64'hBF9FFFFE00000000; - ReadData2E = 64'h402FFFFFFFFFF80F; - ReadData3E = 64'hC3C2F72E444107D4; - ans = 64'hC3C2F72E444107D4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"732869\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC06101FFFFFFFFFE; - ReadData3E = 64'hBFE0000000000001; - ans = 64'hBFE0000000000111; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"733175\n"); - end - ReadData1E = 64'hD28FFFFFFFF800FE; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'hC3F000000041FFFF; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"733481\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h4010400001FFFFFE; - ReadData3E = 64'hBF447AB4C8297DFA; - ans = 64'hBF447AB4C8295D7A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"733787\n"); - end - ReadData1E = 64'hC3C32F485BF17E30; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"734093\n"); + $fwrite(fp,"731730\n"); end ReadData1E = 64'hBFB0000400008000; ReadData2E = 64'h480219B474B1BFFE; @@ -93658,90 +28605,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"734399\n"); + $fwrite(fp,"732731\n"); end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'h43EFFFFFFFFFFFF3; - ans = 64'h43EFFFFFFFFFFFF3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"734705\n"); - end - ReadData1E = 64'h511FFFFF00FFFFFE; - ReadData2E = 64'h00000007FFFFFFBF; - ReadData3E = 64'h0000000000000001; - ans = 64'h102FFFFEFFFC0006; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"735011\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData1E = 64'h3805F935B4169685; ReadData2E = 64'h8000000000000001; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'h8000000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -93775,51 +28644,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"735317\n"); - end - ReadData1E = 64'h3F8FFBFFFFFFF7FF; - ReadData2E = 64'h374FFFF7FFFFBFFE; - ReadData3E = 64'h37E01FFFFFFFFFFE; - ans = 64'h37E0201FFBF800FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"735623\n"); + $fwrite(fp,"733732\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h47FFFFFFFFF8001F; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'h44BFFFFFFFF8001E; + ReadData2E = 64'h408A45E97B67BBEF; + ReadData3E = 64'h41D00000000000A0; + ans = 64'h41D00000000000A0; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -93853,168 +28683,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"735929\n"); + $fwrite(fp,"734733\n"); end - ReadData1E = 64'hC800000800000040; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'h401FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"736235\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h8000000000000028; - ReadData3E = 64'h6A28080000000000; - ans = 64'h6A28080000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"736541\n"); - end - ReadData1E = 64'hBC6007FFFFFEFFFF; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'h4010000000000000; - ans = 64'h4010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"736847\n"); - end - ReadData1E = 64'h8000000110000000; - ReadData2E = 64'hC2F0000080200000; - ReadData3E = 64'h400FBFFFFFFFDFFF; - ans = 64'h400FBFFFFFFFDFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"737153\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData1E = 64'h37EFDFFFFFFFE000; ReadData2E = 64'h8010000000000000; - ReadData3E = 64'hBFBFFDFFFFFFFFBE; - ans = 64'hBFBFFDFFFFFFFFBE; + ReadData3E = 64'h7FF00000000003FC; + ans = 64'h7FF80000000003FC; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -94048,51 +28722,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"737459\n"); - end - ReadData1E = 64'hC7FFFFFFEFF7FFFF; - ReadData2E = 64'h3E8FFFFFBFFFFFFC; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"737765\n"); + $fwrite(fp,"735734\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hBF975D87AD5BDBAE; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -94126,12 +28761,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"738071\n"); + $fwrite(fp,"736735\n"); end - ReadData1E = 64'hAD200000000047FE; - ReadData2E = 64'h404F2BAADD169721; - ReadData3E = 64'hC0C001FEFFFFFFFF; - ans = 64'hC0C001FEFFFFFFFF; + ReadData1E = 64'h4030000FFFFFF7FE; + ReadData2E = 64'h3CA2C3DE09D3B0DC; + ReadData3E = 64'h3FEFFFFFF0000FFE; + ans = 64'h3FEFFFFFF0001011; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -94165,1650 +28800,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"738377\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hB813FDFFFFFFFFFF; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hBCAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"738683\n"); - end - ReadData1E = 64'h456000000007BFFF; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'h4E7FFFFF70000000; - ans = 64'h4E7FFFFF70000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"738989\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC1FA8B35CF63049E; - ReadData3E = 64'hBFDFF7FDFFFFFFFE; - ans = 64'hBFDFF804A2CD73D7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"739295\n"); - end - ReadData1E = 64'h41CD859AA5735B17; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'hC000000000000001; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"739601\n"); - end - ReadData1E = 64'h330FFFFFFBFF7FFE; - ReadData2E = 64'hC00F7FFFFDFFFFFF; - ReadData3E = 64'h3FC00003FFF7FFFE; - ans = 64'h3FC00003FFF7FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"739907\n"); + $fwrite(fp,"737736\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFF; ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'hC1F007FFFBFFFFFE; - ans = 64'hC1F007FFFBFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"740213\n"); - end - ReadData1E = 64'h407FFFFFFF00001E; - ReadData2E = 64'h3FF00000000001FB; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"740519\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'h4010000000000000; - ans = 64'h4010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"740825\n"); - end - ReadData1E = 64'hC0207FFFFFFFF7FE; - ReadData2E = 64'hC3FFBFFFEFFFFFFF; - ReadData3E = 64'h3FE03FFFFFFFF000; - ans = 64'h44305EFFF7BFF80E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"741131\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3FFFFFFF80000007; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h3CC3FFFFC0000003; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"741437\n"); - end - ReadData1E = 64'hC1F02007FFFFFFFF; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'hBFD36778D0F4A90A; - ans = 64'hBFD36776CCF3A90A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"741743\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h08BFFFFFBFFBFFFE; - ReadData3E = 64'hBFD9B3973EE16671; - ans = 64'hBFD9B3973EE16671; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"742049\n"); - end - ReadData1E = 64'h36DFFFDFFFFFFF7E; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h3FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"742355\n"); - end - ReadData1E = 64'h401EFFFFFFFF0000; - ReadData2E = 64'h41E00000021FFFFF; - ReadData3E = 64'h7FF0000001000004; - ans = 64'h7FF8000001000004; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"742661\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'hC01FEFFFFFE00000; - ans = 64'hC01FEFFFFFE00000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"742967\n"); - end - ReadData1E = 64'hC7800047FFFFFFFF; - ReadData2E = 64'h3818718D1A7C2293; - ReadData3E = 64'h7FE0000000000000; - ans = 64'h7FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"743273\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'hC000000000000001; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"743579\n"); - end - ReadData1E = 64'hC24FFFFF80020000; - ReadData2E = 64'h37FFFFF400000000; - ReadData3E = 64'hC1DFFFFFFFFF0001; - ans = 64'hC1DFFFFFFFFF0001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"743885\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3DDFFFFFFFFF000F; - ReadData3E = 64'h8010000000000001; - ans = 64'h3A9FFFFFFFFF000E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"744191\n"); - end - ReadData1E = 64'hC0C0041FFFFFFFFF; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'hB81000000FFFFFDF; - ans = 64'h40A0041FFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"744497\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC2500003FFFFFFF8; - ReadData3E = 64'hC75FFFF7FFFFFFC0; - ans = 64'hC75FFFF7FFFFFFC0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"744803\n"); - end - ReadData1E = 64'hDF2007FFFFFEFFFF; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'h5F0007FFFFFF0000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"745109\n"); - end - ReadData1E = 64'h3FB00002007FFFFE; - ReadData2E = 64'h47FE08445C9805CA; - ReadData3E = 64'hFFDE800000000000; - ans = 64'hFFDE800000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"745415\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'hBFFFFF8000002000; - ans = 64'hBFFFFF8000002000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"745721\n"); - end - ReadData1E = 64'hC03FFFFFFFC7FFFF; - ReadData2E = 64'h403000000000040E; - ReadData3E = 64'hC340000000000001; - ans = 64'hC340000000000101; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"746027\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h3FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"746333\n"); - end - ReadData1E = 64'hFFD0000023FFFFFE; - ReadData2E = 64'hC3DFFFE07FFFFFFF; - ReadData3E = 64'hB80FFDFFFFFFFEFF; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"746639\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC03B1DEB7D342DFF; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'hBCFB1DEB7D342DFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"746945\n"); - end - ReadData1E = 64'h37FFC3CD8026EDA0; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'hBEAB43550AFC66D5; - ans = 64'hBEAB43550AFC66D5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"747251\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h43C00003FDFFFFFF; - ReadData3E = 64'hBEBDFFFFFEFFFFFE; - ans = 64'h40800003FD0FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"747557\n"); - end - ReadData1E = 64'hECA939F14EB859D3; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h6C9939F14EB859D5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"747863\n"); - end - ReadData1E = 64'hC7BDA4A9027C7292; - ReadData2E = 64'hBFFFF80000000003; - ReadData3E = 64'h3EC0FFFFFFFBFFFF; - ans = 64'h47CD9D3FD83BD378; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"748169\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'h4030080FFFFFFFFF; - ans = 64'h4030080FFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"748475\n"); - end - ReadData1E = 64'h434FFFE000000000; - ReadData2E = 64'h43E0007FFFFFFFFD; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'h4740006FFF7FFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"748781\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"749087\n"); - end - ReadData1E = 64'h801BFBE73AF53F7E; - ReadData2E = 64'hBFFFC0007FFFFFFF; - ReadData3E = 64'h480FFFFFF7FDFFFE; - ans = 64'h480FFFFFF7FDFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"749393\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3E4000FFF8000000; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"749699\n"); - end - ReadData1E = 64'hBF6FE01000000000; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'hBE7636E818A167A2; - ans = 64'h3F6FDFE3922FCEBB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"750005\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hB32832CD4DA733A1; - ReadData3E = 64'hB7F0010000100000; - ans = 64'hB7F0010000100000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"750311\n"); - end - ReadData1E = 64'h3CAAA8F7EF2045EC; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hBFD0000000000004; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"750617\n"); - end - ReadData1E = 64'hC0A00FFFFFFF0000; - ReadData2E = 64'hC016EE0768D982C6; - ReadData3E = 64'hBFEFFC0000000FFF; - ans = 64'h40C704758040ED68; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"750923\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'hBEC0000001F7FFFF; - ans = 64'hBEC0000001FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"751229\n"); - end - ReadData1E = 64'hB7F2000000000FFF; - ReadData2E = 64'h7FDFFFDFFBFFFFFF; ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'hF7E1FFEDFDC00FFE; + ans = 64'hC00FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -95842,12 +28839,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"751535\n"); + $fwrite(fp,"738737\n"); + end + ReadData1E = 64'hBFE0FFFFFFFF7FFE; + ReadData2E = 64'hB81B9605A51C361F; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h380D4F65FF6D1CCD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"739738\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h3FDFFFFFFFFFFFF8; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'hC0497B1B82A92327; + ans = 64'hC0497B1B82A92327; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -95881,12 +28917,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"751841\n"); + $fwrite(fp,"740739\n"); end - ReadData1E = 64'hB780000003FFFFDF; - ReadData2E = 64'h3FC1FFFFFFBFFFFF; - ReadData3E = 64'hBFB6BDB75B174AF1; - ans = 64'hBFB6BDB75B174AF1; + ReadData1E = 64'hC51FFFFDDFFFFFFE; + ReadData2E = 64'hC1D0000FFFFFFFF7; + ReadData3E = 64'h422000000000203F; + ans = 64'h4700000EEFFEEFF6; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -95920,12 +28956,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"752147\n"); + $fwrite(fp,"741740\n"); + end + ReadData1E = 64'h3FC000103FFFFFFF; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"742741\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC01FFE0000020000; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; + ReadData2E = 64'hBCCFFFFFA0000000; + ReadData3E = 64'hC0F0000FFFBFFFFE; + ans = 64'hC0F0000FFFBFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -95959,12 +29034,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"752453\n"); + $fwrite(fp,"743742\n"); end - ReadData1E = 64'h402FFFFFFFFFFFFE; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'h5EFB355B02575E41; - ans = 64'h5EFB355B02575E41; + ReadData1E = 64'h3F03FFFFFFFFFFFB; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h30800004003FFFFF; + ans = 64'hBEF3FFFFFFFFFFFA; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -95998,207 +29073,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"752759\n"); + $fwrite(fp,"744743\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC01000007EFFFFFF; - ReadData3E = 64'hC0300100003FFFFF; - ans = 64'hC0300100003FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"753065\n"); - end - ReadData1E = 64'h3F400BFFFFFFFFFF; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'hBF500BFFFFFFFBFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"753371\n"); - end - ReadData1E = 64'hC018F904A86762F5; - ReadData2E = 64'hC0ABCA88E32554C2; - ReadData3E = 64'hC2248DCD904C6353; - ans = 64'hC2248DCCE2CB0DDA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"753677\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'h37EFFFFFFFFC01FF; - ans = 64'hBCBFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"753983\n"); - end - ReadData1E = 64'hC7FFF7FFFFFFDFFE; - ReadData2E = 64'h0010000080000FFF; - ReadData3E = 64'h4000000000000000; - ans = 64'h4000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"754289\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC000000000000001; + ReadData2E = 64'hB9EFEFFFFFF7FFFF; ReadData3E = 64'hBFD0000000000001; - ans = 64'hBFD0000000000009; + ans = 64'hBFD0000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -96232,12 +29112,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"754595\n"); + $fwrite(fp,"745744\n"); end - ReadData1E = 64'hFFD79DB1F2CD62F9; - ReadData2E = 64'hBABFFFFBFFFFFFFA; - ReadData3E = 64'h40B00001FFFFFFFF; - ans = 64'h7AA79DAEFF17249B; + ReadData1E = 64'h41D0003FFFDFFFFF; + ReadData2E = 64'hBFCFFE000000001F; + ReadData3E = 64'h41CFFFFFFFBFFFBE; + ans = 64'h41C8006001CFFEB7; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -96271,12 +29151,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"754901\n"); + $fwrite(fp,"746745\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h7FDE00000001FFFF; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000002; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFA; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -96310,1999 +29190,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"755207\n"); + $fwrite(fp,"747746\n"); end - ReadData1E = 64'h47FFFC0000000FFE; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'h43F0000000200002; - ans = 64'hC81FFC0000000FFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"755513\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC02FFFFFDFFFBFFE; - ReadData3E = 64'h7FD00000000FFFF6; - ans = 64'h7FD00000000FFFF6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"755819\n"); - end - ReadData1E = 64'h39B00020000FFFFF; - ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'hB9D00020000FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"756125\n"); - end - ReadData1E = 64'hB588000800000000; - ReadData2E = 64'h000BBA2331B70CC7; - ReadData3E = 64'hADC0FFFFFFFBFFFF; - ans = 64'hADC0FFFFFFFBFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"756431\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'hC3FFFFC002000000; - ans = 64'hC3FFFFC002000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"756737\n"); - end - ReadData1E = 64'h418000000007FFE0; - ReadData2E = 64'hBFD00003FFFBFFFE; - ReadData3E = 64'hBFF0000000000001; - ans = 64'hC16000042003FFE0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"757043\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC010000000000001; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'hBCC8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"757349\n"); - end - ReadData1E = 64'hBCAC000000000003; - ReadData2E = 64'h41F0000000001E00; - ReadData3E = 64'h403000000000000A; - ans = 64'h402FFFFFE4000014; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"757655\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hB67629A54B42C449; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"757961\n"); - end - ReadData1E = 64'hF7F75C323BE19773; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'h3CAFFFFFFFFFFFC1; - ans = 64'h78275C323BE19772; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"758267\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h37EFFFFFEFFFDFFE; - ReadData3E = 64'h4F000004000003FF; - ans = 64'h4F000004000003FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"758573\n"); - end - ReadData1E = 64'h43DC3CB2A36EEDF9; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'h0010000000000000; - ans = 64'hC40C3CB2A36EEDF7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"758879\n"); - end - ReadData1E = 64'hC030007FFFFFFBFF; - ReadData2E = 64'h0011000001FFFFFE; - ReadData3E = 64'hC1FFFFDBFFFFFFFE; - ans = 64'hC1FFFFDBFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"759185\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'h47FFFFFFFFFFAFFF; - ans = 64'h47FFFFFFFFFFAFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"759491\n"); - end - ReadData1E = 64'hBCAFF81FFFFFFFFE; - ReadData2E = 64'hFFDCF736D2BEB917; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h7C9CF015FC40DC26; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"759797\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC340000000000000; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'hBFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"760103\n"); - end - ReadData1E = 64'hC0600FFFFF7FFFFF; - ReadData2E = 64'h43D0000000007800; - ReadData3E = 64'h9326AC824E53D1EB; - ans = 64'hC4400FFFFF807877; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"760409\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3A523E7FF4DA7D44; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'h401FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"760715\n"); - end - ReadData1E = 64'h37E35FEF92C012CE; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'hB7FF7FFFFFF80000; - ans = 64'hBB335FEF92C012D1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"761021\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h40706E21CD654F01; - ReadData3E = 64'hBCA000000000083E; - ans = 64'h3D306621CD654EFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"761327\n"); - end - ReadData1E = 64'h00279DCB6C5826C9; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'h8000000000000001; - ans = 64'h83879DCB6C5826C8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"761633\n"); - end - ReadData1E = 64'hC00000000FFFFFF7; - ReadData2E = 64'h3FEFFF87FFFFFFFE; - ReadData3E = 64'h3F68E540420AA576; - ans = 64'hBFFFF3157FDE8299; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"761939\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'hC1DFFFFFF0004000; - ans = 64'hC1DFFFFFF1004000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"762245\n"); - end - ReadData1E = 64'hBEC7FE99C03ACAB9; - ReadData2E = 64'h33D00000FFFFDFFE; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFDFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"762551\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'h0010000000000000; - ans = 64'hFC9FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"762857\n"); - end - ReadData1E = 64'hC03FFEFFDFFFFFFF; - ReadData2E = 64'hC001000004000000; - ReadData3E = 64'h7FDFFFFFFFFFDFFE; - ans = 64'h7FDFFFFFFFFFDFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"763163\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h7FEFEF7FFFFFFFFF; - ReadData3E = 64'hC010000000000000; - ans = 64'h7CAFEF7FFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"763469\n"); - end - ReadData1E = 64'h5A3FEB6457A93869; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'hC1CE7828510813A0; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"763775\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hBFDFFFF7FFF7FFFE; - ReadData3E = 64'hC3C00000BFFFFFFF; - ans = 64'hC3C00000BFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"764081\n"); - end - ReadData1E = 64'hC01F80000000000E; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"764387\n"); - end - ReadData1E = 64'h4D4FEFFFFFFFF7FF; - ReadData2E = 64'hFFFFEFFFEFFFFFFE; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'hFFFFEFFFEFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"764693\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'h8C60003FFFC00000; - ans = 64'hFCAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"764999\n"); - end - ReadData1E = 64'hC01FFE0000000FFE; - ReadData2E = 64'hA3000007FFFFFFFD; - ReadData3E = 64'h3FD0000000000000; - ans = 64'h3FD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"765305\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'h8000000000000001; - ans = 64'hFCAFFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"765611\n"); - end - ReadData1E = 64'h40F000000FFE0000; - ReadData2E = 64'hBFBFBFEFFFFFFFFF; - ReadData3E = 64'h402904B537BDEEA5; - ans = 64'hC0BFB36DC520190A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"765917\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h434FFFFFC00003FF; - ReadData3E = 64'h4000000000000001; - ans = 64'h4017FFFFE0000200; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"766223\n"); - end - ReadData1E = 64'hBFBD6817418AD7FF; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'hAAD0400001FFFFFE; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"766529\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h3FE00800007FFFFF; - ReadData3E = 64'hC1C0000038000000; - ans = 64'hC1C0000038000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"766835\n"); - end - ReadData1E = 64'h434216727B125476; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"767141\n"); - end - ReadData1E = 64'h8C0FFEFFFFFFFE00; - ReadData2E = 64'h4360000000FFFFEF; - ReadData3E = 64'h43F000003FFFFE00; - ans = 64'h43F000003FFFFE00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"767447\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'h403FFFFFFFBDFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"767753\n"); - end - ReadData1E = 64'h43CDFC0000000000; - ReadData2E = 64'h3800FE000D1AEA44; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBC9FFE027FF6770F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"768059\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"768365\n"); - end - ReadData1E = 64'h3FEDFFC000000000; - ReadData2E = 64'hB680007C00000000; - ReadData3E = 64'hC1E001000FFFFFFF; - ans = 64'hC1E001000FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"768671\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFF; - ReadData2E = 64'h380CE2920341D715; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'hBFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"768977\n"); - end - ReadData1E = 64'hC2201001FFFFFFFF; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'hD32FFFFFFF803FFE; - ans = 64'hD32FFFFFFF803FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"769283\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hBF2400FFFFFFFFFE; - ReadData3E = 64'h3810008000100000; - ans = 64'hBBE400FFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"769589\n"); - end - ReadData1E = 64'hBCA20FFFFFFFFFFE; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"769895\n"); - end - ReadData1E = 64'hB810040000000400; - ReadData2E = 64'h3FD0004000000080; - ReadData3E = 64'h50C07FFFFFFBFFFF; - ans = 64'h50C07FFFFFFBFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"770201\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'hBF0FFFDFBFFFFFFE; - ans = 64'hBF0FFFDFBFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"770507\n"); - end - ReadData1E = 64'h400000201FFFFFFF; - ReadData2E = 64'hC65FFBFEFFFFFFFE; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'hC66FFC3F37F5FDFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"770813\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData1E = 64'hC1E010F23CF5BC56; + ReadData2E = 64'h400A336CC8F10050; ReadData3E = 64'h7FEFFFFFFFFFFFFE; ans = 64'h7FEFFFFFFFFFFFFE; FrmE = 3'b000; @@ -98338,12 +29229,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"771119\n"); + $fwrite(fp,"748747\n"); end - ReadData1E = 64'h400F00007FFFFFFF; - ReadData2E = 64'h41D000000004FFFF; - ReadData3E = 64'h381FFBFFFFBFFFFF; - ans = 64'h41EF00008009AFFD; + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h40FFFFFFFFFDFFDE; + ans = 64'h40FFFFFFFFFDFFDE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -98377,12 +29268,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"771425\n"); + $fwrite(fp,"749748\n"); end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hBFCFFFEFEFFFFFFE; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'h3FEFFFFFFFFFFFFE; + ReadData1E = 64'h41C0001FFFFFFFFA; + ReadData2E = 64'h37EFFFFFFFFFDBFE; + ReadData3E = 64'hB80000000000043E; + ans = 64'h39C0001FFEFFEDF9; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -98416,12 +29307,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"771731\n"); + $fwrite(fp,"750749\n"); end - ReadData1E = 64'h4020000007FFFC00; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'hC00DBEC4D86AAF0A; - ans = 64'hC00DBEC4D86AAF0A; + ReadData1E = 64'hC0CFFFFFFF8FFFFF; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h40E0001FFFC80000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -98455,12 +29346,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"772037\n"); + $fwrite(fp,"751750\n"); end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hBF3FFFFFFFEFFDFF; - ReadData3E = 64'hBFDFFFFFF00003FF; - ans = 64'hBFDFFFFFF00003FF; + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'h8240000040007FFF; + ReadData3E = 64'hC1EFFFFFFC000002; + ans = 64'hC1EFFFFFFC000002; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -98494,12 +29385,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"772343\n"); + $fwrite(fp,"752751\n"); end - ReadData1E = 64'h801FFFFFEBFFFFFE; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'h4340000000000001; - ans = 64'h4340000000000001; + ReadData1E = 64'hC3C59957540046C1; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h3B4FB093592C5445; + ans = 64'h43E59957540046C0; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -98533,12 +29424,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"772649\n"); + $fwrite(fp,"753752\n"); end - ReadData1E = 64'hDC1FFBFBFFFFFFFE; - ReadData2E = 64'h47FFFFFFF4000000; - ReadData3E = 64'hBF3FFDFFFFFFFFFF; - ans = 64'hE42FFBFBF401817E; + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'hC3D000010003FFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'hC09000010003FFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -98572,12 +29463,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"772955\n"); + $fwrite(fp,"754753\n"); end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'hC1E63CFF38491175; - ans = 64'hC1E63CFF38491175; + ReadData1E = 64'hBFC3E586CAD369EE; + ReadData2E = 64'hC020FFEFFFFFFFFF; + ReadData3E = 64'hB7F3FFFFFFFBFFFF; + ans = 64'h3FF523CB51F9D5B8; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -98611,12 +29502,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"773261\n"); + $fwrite(fp,"755754\n"); end - ReadData1E = 64'h3800A00000000000; - ReadData2E = 64'hBFAFFFFF003FFFFF; + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFF; ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'hB7C09FFF7B213FFF; + ans = 64'hBCDFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -98650,12 +29541,558 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"773567\n"); + $fwrite(fp,"756755\n"); + end + ReadData1E = 64'h402FFF8000400000; + ReadData2E = 64'h3F2FFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FF8001FFFEFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"757756\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h37F000000043FFFF; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"758757\n"); + end + ReadData1E = 64'h002FFFFE003FFFFF; + ReadData2E = 64'h35203FFF7FFFFFFE; + ReadData3E = 64'h47F0000000400000; + ans = 64'h47F0000000400000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"759758\n"); + end + ReadData1E = 64'hBF4FFFFFFFFE000E; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h42AFFFFFFFFE000C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"760759\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'h0010800000080000; + ReadData3E = 64'h000FFF7FFDFFFFFF; + ans = 64'h000FFF7FFE000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"761760\n"); + end + ReadData1E = 64'hBFB3F0FD8371FA07; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h43A000020007FFFF; + ans = 64'h7FB3F0FD8371FA06; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"762761\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'hC9DFFFFFFFFDFBFE; + ReadData3E = 64'h4340000000000001; + ans = 64'hC69FFFFFFFFDFBFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"763762\n"); + end + ReadData1E = 64'h002EE065C3378C51; + ReadData2E = 64'hBEF007FFFFFFFFFB; + ReadData3E = 64'hBE90003FFFFFDFFE; + ans = 64'hBE90003FFFFFDFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"764763\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFF; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"765764\n"); + end + ReadData1E = 64'h400FF1FFFFFFFFFF; + ReadData2E = 64'hB8ADFFFFFEFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"766765\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'hC010000004000FFF; + ans = 64'hC010000004000FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"767766\n"); + end + ReadData1E = 64'h3FE000000007DFFF; + ReadData2E = 64'h0021FFFFFFFFBFFE; + ReadData3E = 64'h43FC1EFA4A14DE49; + ans = 64'h43FC1EFA4A14DE49; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"768767\n"); + end + ReadData1E = 64'h7FFFFFFFFEFFFFFD; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'h7FFFFFFFFEFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"769768\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'hC165ADDDF922EB50; + ReadData3E = 64'h4343FFFFFFFFFFF6; + ans = 64'h4343FFFFFFFFFFF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"770769\n"); + end + ReadData1E = 64'h43C40001FFFFFFFF; ReadData2E = 64'h0010000000000001; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; + ReadData3E = 64'h3F6000000040007F; + ans = 64'h3F6000000040007F; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -98689,51 +30126,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"773873\n"); - end - ReadData1E = 64'h7D00000001FFFBFE; - ReadData2E = 64'hC3C0000001000004; - ReadData3E = 64'hBFC0000000083FFE; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"774179\n"); + $fwrite(fp,"771770\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC0156543FCA323DC; - ReadData3E = 64'hBFE0000000000000; - ans = 64'hBFE000000000000B; + ReadData2E = 64'hF45FF7FFE0000000; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hF11FF7FFDFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -98767,12 +30165,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"774485\n"); + $fwrite(fp,"772771\n"); end - ReadData1E = 64'hBF200001001FFFFF; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'hBD501BFFFFFFFFFF; - ans = 64'hBD501BFFFFFFFFFF; + ReadData1E = 64'hCD9FFFEFBFFFFFFF; + ReadData2E = 64'hAF3C8823FA00CF4B; + ReadData3E = 64'h43DFBFBFFFFFFFFF; + ans = 64'h43DFBFBFFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -98806,207 +30204,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"774791\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h47EFFF80007FFFFF; - ReadData3E = 64'h3FEFFFFFEFFF0000; - ans = 64'h44AFFF80007FFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"775097\n"); - end - ReadData1E = 64'hC02FFFFFFFF7FFEF; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"775403\n"); - end - ReadData1E = 64'hBFEC0000000007FF; - ReadData2E = 64'h000F9D0DF8DF20DF; - ReadData3E = 64'h32AFFFFF6FFFFFFF; - ans = 64'h32AFFFFF6FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"775709\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'hBFD367D06C6CD192; - ans = 64'hBFD367D06C6CD192; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"776015\n"); - end - ReadData1E = 64'hB2EFFFFFFFBFFFFF; - ReadData2E = 64'h41E0007FC0000000; - ReadData3E = 64'h0000000000000000; - ans = 64'hB4E0007FBFDFFF00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"776321\n"); + $fwrite(fp,"773772\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'h4340000000000001; - ans = 64'h4340000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -99040,12 +30243,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"776627\n"); + $fwrite(fp,"774773\n"); end - ReadData1E = 64'hE160010000000080; - ReadData2E = 64'h20E1FFFFFFFFFFFF; - ReadData3E = 64'h293DF7FFFFFFFFFE; - ans = 64'hC25201200000008F; + ReadData1E = 64'h3FB0000080000007; + ReadData2E = 64'h4890EA0866DE62B0; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h4850EA08EE2EA5EE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -99079,129 +30282,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"776933\n"); + $fwrite(fp,"775774\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hFFE4F8119C381900; - ReadData3E = 64'h3FD0000000000001; - ans = 64'hFCA4F8119C3818FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"777239\n"); - end - ReadData1E = 64'h40192DFAA3A08E50; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'hC7E000800003FFFF; - ans = 64'hC7E000800003FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"777545\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3FFFF80000FFFFFF; - ReadData3E = 64'hC790000000000006; - ans = 64'hC790000000000006; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"777851\n"); - end - ReadData1E = 64'h43CFBFFFFFFBFFFF; ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h408FDFFFFFFBFFFD; + ReadData3E = 64'hBFF001FFFFFDFFFF; + ans = 64'hBFF001FFFFFDFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -99235,12 +30321,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"778157\n"); + $fwrite(fp,"776775\n"); end - ReadData1E = 64'h43EFFFF7FFFF0000; - ReadData2E = 64'h002000008000001F; - ReadData3E = 64'h409FFFF7BFFFFFFF; - ans = 64'h409FFFF7BFFFFFFF; + ReadData1E = 64'h47F1000000008000; + ReadData2E = 64'h405FFFFFF0001FFF; + ReadData3E = 64'hC1FF00003FFFFFFE; + ans = 64'h4860FFFFF78090FF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -99274,12 +30360,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"778463\n"); + $fwrite(fp,"777776\n"); + end + ReadData1E = 64'h43C0100001FFFFFF; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'h43B0100001FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"778777\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'hBCAFFFFFFFE00000; - ans = 64'hBCA7FFFFFFE00000; + ReadData2E = 64'h6D2FFFFFDFFFFFF0; + ReadData3E = 64'hBAA7FA7A6CB0B9B5; + ans = 64'h69EFFFFFDFFFFFEE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -99313,10 +30438,400 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"778769\n"); + $fwrite(fp,"779778\n"); end - ReadData1E = 64'h480040000000001F; - ReadData2E = 64'hC3EFFFFFFFFFF03F; + ReadData1E = 64'hC1D000000001FC00; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h47FFFFF7FFE00000; + ans = 64'h47FFFFF7FFE00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"780779\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'hC0600003FDFFFFFF; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hBD1FE007FBFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"781780\n"); + end + ReadData1E = 64'h0028C719E0E89E71; + ReadData2E = 64'h40200000000FFF00; + ReadData3E = 64'h9BDFE10000000000; + ans = 64'h9BDFE10000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"782781\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h0000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"783782\n"); + end + ReadData1E = 64'h47FFFFDFFFFC0000; + ReadData2E = 64'hB817FFFDFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC350000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"784783\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'h4340001FFFF7FFFE; + ans = 64'h4340001FFFF7FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"785784\n"); + end + ReadData1E = 64'h41C0002000800000; + ReadData2E = 64'h3FF0000000040006; + ReadData3E = 64'hC7FFFFFFFFFFFFE8; + ans = 64'hC7FFFFFFFFFFFFE8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"786785\n"); + end + ReadData1E = 64'h41DC414898E1CA3D; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h41EC414898D1CA3F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"787786\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'hC0100000DFFFFFFF; + ReadData3E = 64'hBC00080007FFFFFF; + ans = 64'hBCD0008120003FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"788787\n"); + end + ReadData1E = 64'h41EFF7F7FFFFFFFF; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h3FD0000000000017; + ans = 64'h420FF7F80001FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"789788\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'h41D0008000040000; ReadData3E = 64'h7FF0000000000001; ans = 64'h7FF8000000000001; FrmE = 3'b000; @@ -99352,1884 +30867,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"779075\n"); + $fwrite(fp,"790789\n"); + end + ReadData1E = 64'hC02000001FFFFFFA; + ReadData2E = 64'h3FD000000FDFFFFF; + ReadData3E = 64'hC7EFF7FFBFFFFFFF; + ans = 64'hC7EFF7FFBFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"791790\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"779381\n"); - end - ReadData1E = 64'hC5B81A8A748009FF; - ReadData2E = 64'h40100000000000C0; - ReadData3E = 64'hC0F0001FFFFFFEFE; - ans = 64'hC5D81A8A74800B20; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"779687\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h43CEFFFFFC000000; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'h408EFFFFFBFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"779993\n"); - end - ReadData1E = 64'hE337B88BE495EEA7; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'h400FFFFFF7EFFFFF; - ans = 64'hE327B88BE495EEA6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"780299\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h16C929AB0692347E; - ReadData3E = 64'hC02382DEFC30F29B; - ans = 64'hC02382DEFC30F29B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"780605\n"); - end - ReadData1E = 64'h40AFFFBFFFFFFFFF; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'hC000000000000000; - ans = 64'h409FF7BFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"780911\n"); - end - ReadData1E = 64'hBF0FFFF8000000FF; - ReadData2E = 64'hC1C040000007FFFF; - ReadData3E = 64'h40F01FFFFFFFFF7F; - ans = 64'h40F83FFDF803FFBE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"781217\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'hC1FEFFFFFFF7FFFE; - ans = 64'hC1FEFFFFFFF7FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"781523\n"); - end - ReadData1E = 64'hC10FFF8000000000; - ReadData2E = 64'h2D300000003FFFC0; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"781829\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h400FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"782135\n"); - end - ReadData1E = 64'h3EDFFFFE0000000E; - ReadData2E = 64'h3FE0002FFFFFFFFF; - ReadData3E = 64'h41D01FFEFFFFFFFE; - ans = 64'h41D01FFF0000000E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"782441\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC3FFFFF100000000; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'hC0BFFFF0FFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"782747\n"); - end - ReadData1E = 64'hB810000000041000; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'h49660E2E11B09A23; - ans = 64'h49660E2E11B09A23; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"783053\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h43D010000000007F; - ReadData3E = 64'hE2C0000010000FFF; - ans = 64'hE2C0000010000FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"783359\n"); - end - ReadData1E = 64'hBFC1FEFFFFFFFFFF; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h3FEB804000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"783665\n"); - end - ReadData1E = 64'hC15FFFFFDFFFFFBF; - ReadData2E = 64'h37E003FFFF7FFFFE; - ReadData3E = 64'h3FA000000BFFFFFE; - ans = 64'h3FA000000BFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"783971\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'h3FCFFFF7FEFFFFFF; - ans = 64'h3FCFFFF7FF000007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"784277\n"); - end - ReadData1E = 64'hC7EE008000000000; - ReadData2E = 64'h403FFFFFFFF7BFFF; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'hC83E007FFFF843DE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"784583\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'hC000000000000000; - ans = 64'hBFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"784889\n"); - end - ReadData1E = 64'hB7FC6D6EAD2BD6AB; - ReadData2E = 64'hC7EFFFFFFFFF87FE; - ReadData3E = 64'h438FFFEE00000000; - ans = 64'h438FFFEE00000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"785195\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3800FFFFFFFFFF7E; - ReadData3E = 64'h8010000000000000; - ans = 64'h34C0FFFFFFFFFF7D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"785501\n"); - end - ReadData1E = 64'hFFE00000200000FF; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'hC362D940E64F79A5; - ans = 64'hFFE00000200000FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"785807\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h001F7FFFFFFEFFFF; - ReadData3E = 64'hFFF8EFD2FE79C24A; - ans = 64'hFFF8EFD2FE79C24A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"786113\n"); - end - ReadData1E = 64'h40810000001FFFFE; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'h4080F800001FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"786419\n"); - end - ReadData1E = 64'hC007FFFFFFFFC000; - ReadData2E = 64'h401FC00000080000; - ReadData3E = 64'hC3C01FFFFFFFFFFF; - ans = 64'hC3C01FFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"786725\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'h43EFFFFFFFEFDFFE; - ans = 64'h43EFFFFFFFEFDFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"787031\n"); - end - ReadData1E = 64'h3FF0800000000003; - ReadData2E = 64'h47FA61529E587B8B; - ReadData3E = 64'hC340000000000000; - ans = 64'h47FB345D334B3F6C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"787337\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h3FF0000000000003; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"787643\n"); - end - ReadData1E = 64'h3E4124E67B52FD98; - ReadData2E = 64'hC00FFF0000000FFE; - ReadData3E = 64'h8727490D6F398EA1; - ans = 64'hBE61245D541F2B91; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"787949\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h804FFFF7FFFFFFEE; - ReadData3E = 64'h0000000000000001; - ans = 64'h800000000000000F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"788255\n"); - end - ReadData1E = 64'hBF9526E7BD8A1F46; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'h480FFFDFFFFFFFDF; - ans = 64'h480FFFDFFFFFFFDF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"788561\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h381020000007FFFE; - ReadData3E = 64'h37E00003FFF7FFFF; - ans = 64'h37E00003FFF80007; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"788867\n"); - end - ReadData1E = 64'hFFDFF7FFFFFFFBFF; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'hFFEFF7FFFFFFFC01; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"789173\n"); - end - ReadData1E = 64'h003C97950DCA0015; - ReadData2E = 64'hEFACB38DCC424DA6; - ReadData3E = 64'h278003FFFFEFFFFE; - ans = 64'hAFF9A51108403B01; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"789479\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'hC95F800100000000; - ans = 64'hC95F800100000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"789785\n"); - end - ReadData1E = 64'h7FF0EFBB42DBF4E3; - ReadData2E = 64'h2255FFFFFFFFFFFF; - ReadData3E = 64'h4010000000000001; - ans = 64'h7FF8EFBB42DBF4E3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"790091\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hBFEFFFFFFFFFFFF7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"790397\n"); - end - ReadData1E = 64'h46F342BC1CEBE027; - ReadData2E = 64'hC3D6C59A9D585605; - ReadData3E = 64'h802DFFFFFFFFBFFE; - ans = 64'hCADB69A273A42F3F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"790703\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC00FFDFFFFFFFFFF; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"791009\n"); - end - ReadData1E = 64'h30B00000010FFFFF; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'hC7F903C3D334F340; - ans = 64'hC7F903C3D334F340; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"791315\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3CAFC89A50DE63CA; - ReadData3E = 64'hC04C000007FFFFFF; - ans = 64'hC04C000007FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"791621\n"); - end - ReadData1E = 64'hC3C0000000BFFFFE; - ReadData2E = 64'h4010000000000000; - ReadData3E = 64'hBFD0000000000000; - ans = 64'hC3E0000000BFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"791927\n"); - end - ReadData1E = 64'hBF8F80000000007F; - ReadData2E = 64'h000000013FFFFFFE; - ReadData3E = 64'hC3DFFFF803FFFFFF; - ans = 64'hC3DFFFF803FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"792233\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'hB80FFFF00007FFFF; - ans = 64'h3CD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"792539\n"); - end - ReadData1E = 64'hC00000000001003E; - ReadData2E = 64'h402CDC4C5AFCC35F; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hC0406E262D7F48CA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"792845\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'h3FE000000000000F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"793151\n"); - end - ReadData1E = 64'h43CFFFFC0003FFFF; - ReadData2E = 64'h8020FFFFFFFFFFFB; - ReadData3E = 64'h467691F27D3EA690; - ans = 64'h467691F27D3EA690; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"793457\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC96004000003FFFF; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"793763\n"); - end - ReadData1E = 64'hFFFFC7FFFFFFFFFF; ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'h7FEFFFFFFF7FFFE0; - ans = 64'hFFFFC7FFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -101263,163 +30945,7 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"794069\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hB7E1000FFFFFFFFE; - ReadData3E = 64'hC34FFFFFFDFFFFFE; - ans = 64'hC34FFFFFFDFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"794375\n"); - end - ReadData1E = 64'h406FFFFFF7FFF7FE; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'h3CA0000000000001; - ans = 64'h43BFFFFFF7FFF7FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"794681\n"); - end - ReadData1E = 64'hFFD0002000000040; - ReadData2E = 64'hC03C96F971286B1E; - ReadData3E = 64'h41EFFC0200000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"794987\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'h420000040000FFFF; - ans = 64'h420000040010FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"795293\n"); + $fwrite(fp,"792791\n"); end ReadData1E = 64'h8020010001FFFFFE; ReadData2E = 64'h525FFFFEFFFFF000; @@ -101458,12 +30984,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"795599\n"); + $fwrite(fp,"793792\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'hBFD0000000000000; - ans = 64'h3FFC000000000000; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h54103FFFFFFFFFFB; + ans = 64'h54103FFFFFFFFFFB; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -101497,12 +31023,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"795905\n"); + $fwrite(fp,"794793\n"); end - ReadData1E = 64'h7FFFFC03FFFFFFFF; - ReadData2E = 64'hB7EFFFFFEEFFFFFF; - ReadData3E = 64'h00100003FFFF7FFF; - ans = 64'h7FFFFC03FFFFFFFF; + ReadData1E = 64'h3CAFFFFFEFFFFFEF; + ReadData2E = 64'hC9E00000000017FF; + ReadData3E = 64'h37E61C7A840D9439; + ans = 64'hC69FFFFFF0002FED; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -101536,10 +31062,361 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"796211\n"); + $fwrite(fp,"795794\n"); + end + ReadData1E = 64'hFFED83A6B2E656B1; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"796795\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hCD7FFFFFFFFDFFF6; + ReadData2E = 64'hE30BFFFFFFBFFFFE; + ReadData3E = 64'h592083FFFFFFFFFE; + ans = 64'hDFCBFFFFFFBFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"797796\n"); + end + ReadData1E = 64'h450FFFC0000001FF; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h002FFEFFFFFFEFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"798797\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'h4BC6003B49F58FDD; + ReadData3E = 64'hC010000000000001; + ans = 64'h4886003B49F58FDC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"799798\n"); + end + ReadData1E = 64'hD610000FFFFFFFFB; + ReadData2E = 64'h8020000020000001; + ReadData3E = 64'h408FFFFBEFFFFFFF; + ans = 64'h408FFFFBEFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"800799\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"801800\n"); + end + ReadData1E = 64'hC010002003FFFFFF; + ReadData2E = 64'hBFC00000000107FF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h3FE00020040107FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"802801\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'hC95000001FFFFFFB; + ans = 64'hC95000001FFFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"803802\n"); + end + ReadData1E = 64'h4021FFFF7FFFFFFE; + ReadData2E = 64'h41BFE00FFFFFFFFE; + ReadData3E = 64'h400FC000000003FF; + ans = 64'h41F1EE0880BF3FFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"804803\n"); + end + ReadData1E = 64'h3F925A332FB28A7D; + ReadData2E = 64'h8010000000000000; ReadData3E = 64'h7FE0000000000000; ans = 64'h7FE0000000000000; FrmE = 3'b000; @@ -101575,51 +31452,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"796517\n"); - end - ReadData1E = 64'hDB40010002000000; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'h3FC35D556174AFCD; - ans = 64'hDEA0010001FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"796823\n"); + $fwrite(fp,"805804\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hBFD7BFFFFFFFFFFF; - ReadData3E = 64'h806852766CBEC085; - ans = 64'hBC97BFFFFFFFFFFE; + ReadData2E = 64'hC32B8521EFE7D354; + ReadData3E = 64'hAA18400000000000; + ans = 64'hBFEB8521EFE7D352; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -101653,12 +31491,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"797129\n"); + $fwrite(fp,"806805\n"); end - ReadData1E = 64'h3FDFFFFDFFEFFFFF; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'h433FFFFDFFEFFFFD; + ReadData1E = 64'h7EBFFFDFFFFFF7FF; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h3810003FFFFFFFFD; + ans = 64'hBEEFFFDFFFFFF7FE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -101692,439 +31530,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"797435\n"); - end - ReadData1E = 64'hB4B6E07873102932; - ReadData2E = 64'h434FF87FFFFFFFFF; - ReadData3E = 64'h47E34D80C103EAA3; - ans = 64'h47E34D80C103EAA3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"797741\n"); + $fwrite(fp,"807806\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'h43400FFFFFF80000; - ans = 64'h7C9FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"798047\n"); - end - ReadData1E = 64'h41300010000FFFFF; - ReadData2E = 64'hBFAFFFFFDFFFFF80; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hC0F0001FF00FEFBF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"798353\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'h3CA0000000000001; - ans = 64'h7CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"798659\n"); - end - ReadData1E = 64'hC1E85FEE97A05DE1; - ReadData2E = 64'h43C4000000080000; - ReadData3E = 64'hC1CFF0B2863E46AD; - ans = 64'hC5BE77EA3D94A551; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"798965\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h4000001FFFFFFFFF; - ReadData3E = 64'hC340000000000001; - ans = 64'hC340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"799271\n"); - end - ReadData1E = 64'h44BC001000000000; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'h49E9A8F935ADEB66; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"799577\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h416AA0B165976F71; - ReadData3E = 64'hBF0010000003FFFE; - ans = 64'hBF000F957D3E69A0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"799883\n"); - end - ReadData1E = 64'h80003FFFFFE00000; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'hBFAFFFFFEFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"800189\n"); - end - ReadData1E = 64'hC1DFFEFFFFFFFEFF; - ReadData2E = 64'h43C003FEFFFFFFFF; - ReadData3E = 64'hFB4FFFFF800000FF; - ans = 64'hFB4FFFFF800000FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"800495\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'hAD5080B9606E81BA; - ans = 64'h7CAFFFFFFFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"800801\n"); - end - ReadData1E = 64'h37F000000000DFFF; - ReadData2E = 64'h3F8A7CA782E53728; + ReadData2E = 64'hBFB03FFFE0000000; ReadData3E = 64'h3FE0000000000001; ans = 64'h3FE0000000000001; FrmE = 3'b000; @@ -102160,12 +31569,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"801107\n"); + $fwrite(fp,"808807\n"); end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'h7FF0000000000000; + ReadData1E = 64'hC1A0100000000006; + ReadData2E = 64'hC06000004FFFFFFF; + ReadData3E = 64'h3C8EFBFFFFFFFFFF; + ans = 64'h4210100050500005; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -102199,1377 +31608,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"801413\n"); - end - ReadData1E = 64'hB5FFFFFFF0000003; - ReadData2E = 64'hBFB0000000000900; - ReadData3E = 64'h40B0000000000F7F; - ans = 64'h40B0000000000F7F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"801719\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hA81FFFF00000007F; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'h401FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"802025\n"); - end - ReadData1E = 64'hD5A00009FFFFFFFF; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'h364FFFFFFC3FFFFF; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"802331\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3FAFFFFF003FFFFF; - ReadData3E = 64'h41DE7402306C1129; - ans = 64'h41DE7402306C1129; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"802637\n"); - end - ReadData1E = 64'h2A3FFFFFF8000000; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'h8000000000000000; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"802943\n"); - end - ReadData1E = 64'hC00007FFFFFFFFFF; - ReadData2E = 64'hBFE00077FFFFFFFE; - ReadData3E = 64'h400E0000007FFFFE; - ans = 64'h4013021E0F3FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"803249\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'hBE8000003FFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"803555\n"); - end - ReadData1E = 64'hBFBFFFE00007FFFF; - ReadData2E = 64'hBFEFFFFFFEBFFFFE; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hBFD80008004DFFB0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"803861\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'h000FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"804167\n"); - end - ReadData1E = 64'hC96000000FFFFFDE; - ReadData2E = 64'h31D03FFFFFFF8000; - ReadData3E = 64'hC1C87E0A0FF31A23; - ans = 64'hC1C87E0A0FF31A23; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"804473\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3345D50CBBB891A1; - ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'hC00FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"804779\n"); - end - ReadData1E = 64'hC7F0B2F9A4CB116D; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'h9C019C696C0DD16A; - ans = 64'h9C019C696C0DD16A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"805085\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hB7F00000007FFE00; - ReadData3E = 64'hBEAFF7FFF0000000; - ans = 64'hBEAFF7FFF0000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"805391\n"); - end - ReadData1E = 64'hCDA521B1B27F8608; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"805697\n"); - end - ReadData1E = 64'h41D3F2F4802615C5; - ReadData2E = 64'hC00FFFF7FFDFFFFE; - ReadData3E = 64'h40AFFFFF80000020; - ans = 64'hC1F3F2EE835506C6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"806003\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'hC07FFFFFFF7FFFFE; - ans = 64'hC07FFFFFFF7FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"806309\n"); - end - ReadData1E = 64'h4051FFFFFFFFF7FF; - ReadData2E = 64'h3FF80A0A70A9D9F4; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h405B0B4BBEBF092C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"806615\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'h8000000000000000; - ans = 64'h8000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"806921\n"); - end - ReadData1E = 64'h40EFFFFFCFFFFFFF; - ReadData2E = 64'hBF46B20A5AF687D4; - ReadData3E = 64'h4010403FFFFFFFFE; - ans = 64'hC044AA0238EB784B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"807227\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h4B0F8001FFFFFFFF; - ReadData3E = 64'h4000000000000000; - ans = 64'h47CF8001FFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"807533\n"); - end - ReadData1E = 64'h405000FFFFFF7FFE; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'h3FBFE00100000000; - ans = 64'h3FBFE00100000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"807839\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h402E000001FFFFFF; - ReadData3E = 64'hC1DFFFFBFFFFBFFF; - ans = 64'hC1DFFFFBFFFFBFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"808145\n"); - end - ReadData1E = 64'hC0F0001FFFFFFEFF; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"808451\n"); - end - ReadData1E = 64'hC02409224A572D98; - ReadData2E = 64'hC06FFFFFE0020000; - ReadData3E = 64'h3FFFFFFFF007FFFF; - ans = 64'h40A40D22364D4CE0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"808757\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'h4B87A4A7FDD82AE3; - ans = 64'h4B87A4A7FDD82AE3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"809063\n"); - end - ReadData1E = 64'hC0F0001FFFFFFFFB; - ReadData2E = 64'hC089DB2B2EDEB592; - ReadData3E = 64'hBCA0000000000000; - ans = 64'h4189DB5EE5351347; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"809369\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"809675\n"); - end - ReadData1E = 64'h4A6040000000000F; - ReadData2E = 64'hC0300100000003FF; - ReadData3E = 64'hC3E0000000000000; - ans = 64'hCAA041040000041E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"809981\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h7FE000000FFFFFFF; - ReadData3E = 64'hBFF0000000000001; - ans = 64'h7CA000000FFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"810287\n"); - end - ReadData1E = 64'h41FFF1070335C8D9; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'hBFA0DC2898783816; - ans = 64'hBFA0DC48897F3B4C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"810593\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3D93E99A04CEC718; - ReadData3E = 64'hC3DFFDFFDFFFFFFF; - ans = 64'hC3DFFDFFDFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"810899\n"); - end - ReadData1E = 64'hC1F14340A63773D7; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'hC34FFFFFFFFFFFFE; - ans = 64'hC34FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"811205\n"); - end - ReadData1E = 64'hA32C85A44ACBA581; - ReadData2E = 64'h41F7FFFFFFFFFFDE; - ReadData3E = 64'h43CFFFFFBFF00000; - ans = 64'h43CFFFFFBFF00000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"811511\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'hBC92546CCE634083; - ans = 64'hBC92546CCE634085; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"811817\n"); - end - ReadData1E = 64'h9DD03FFFFFFFFF7F; - ReadData2E = 64'hBFE5AE33346526BE; - ReadData3E = 64'h0010000000000001; - ans = 64'h1DC604EC0136BAAA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"812123\n"); + $fwrite(fp,"809808\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -103603,634 +31647,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"812429\n"); + $fwrite(fp,"810809\n"); end - ReadData1E = 64'hA4BA947C9B590FEF; - ReadData2E = 64'hC7FBC71D8AAF5885; - ReadData3E = 64'hB7E9F7E971FFC3F6; - ans = 64'hB7E9F7E971FFC3F6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"812735\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC3FFFDFFF7FFFFFE; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'hC0BFFCFFF7FFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"813041\n"); - end - ReadData1E = 64'h402100000FFFFFFE; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'hBF6007FFFFFFFFBE; - ans = 64'hBF600800000010BE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"813347\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h48000FFFEFFFFFFF; - ReadData3E = 64'hBF80EAC8590DC991; - ans = 64'h44C00FFFEFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"813653\n"); - end - ReadData1E = 64'h4150000040001FFF; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'h4340000000000000; - ans = 64'h433FFFFFFFF00000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"813959\n"); - end - ReadData1E = 64'h37EFFFFFF8000006; - ReadData2E = 64'h401000000F7FFFFE; - ReadData3E = 64'h41D0000020001FFF; - ans = 64'h41D0000020001FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"814265\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'h4641C8183EC0208B; - ans = 64'h4641C8183EC0208B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"814571\n"); - end - ReadData1E = 64'h40CDFFFFFF800000; - ReadData2E = 64'h3FB000000000000A; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'h408DFFFFFF800013; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"814877\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'hC34FFFFFFFFFFFFE; - ans = 64'hC34FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"815183\n"); - end - ReadData1E = 64'h3FEC00000000001F; - ReadData2E = 64'h47EFFFFFEFFFFFEE; - ReadData3E = 64'h4046D38AE2B5B7C9; - ans = 64'h47EBFFFFF200000F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"815489\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC1EFEFFFFFFFFE00; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFE00001FEFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"815795\n"); - end - ReadData1E = 64'h3F9FFFFFFFFFF080; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'h4380000100000004; - ans = 64'h4380000100000004; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"816101\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h50AE6549B7B9413E; - ReadData3E = 64'hC0700000FFFFFF00; - ans = 64'h4D6E6549B7B9413C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"816407\n"); - end - ReadData1E = 64'hC3F1FFFFFFFFFFF7; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'hC010000000000001; - ans = 64'h43E1FFFFFFFFFFF6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"816713\n"); - end - ReadData1E = 64'hC3CF000008000000; - ReadData2E = 64'h00000001F7FFFFFF; - ReadData3E = 64'hADC7AEB97D7AAA63; - ans = 64'hADC7AEB97D7AAA63; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"817019\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'h00107FFFEFFFFFFE; - ans = 64'hBC9FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"817325\n"); - end - ReadData1E = 64'h400C00000FFFFFFE; - ReadData2E = 64'h3F803FFFFFC00000; + ReadData1E = 64'h401C00000003FFFF; + ReadData2E = 64'hC02000000BFFFFFF; ReadData3E = 64'hFFFFFFFFFFFFFFFE; ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; @@ -104266,12 +31686,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"817631\n"); + $fwrite(fp,"811810\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'h4340000000000000; - ans = 64'h4340000000000000; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h4343D389B4EBC821; + ans = 64'h4343D389B4EBC821; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -104305,12 +31725,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"817937\n"); + $fwrite(fp,"812811\n"); end - ReadData1E = 64'h43FEFFFFFFDFFFFE; - ReadData2E = 64'h3BE000003FFFFFF7; - ReadData3E = 64'h3F1F7FDFFFFFFFFE; - ans = 64'h3FEF00FC7ADFFFEC; + ReadData1E = 64'hC0BF010000000000; + ReadData2E = 64'h41C0011FFFFFFFFF; + ReadData3E = 64'h800000000000009E; + ans = 64'hC28F032E11FFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -104344,12 +31764,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"818243\n"); + $fwrite(fp,"813812\n"); + end + ReadData1E = 64'h7FEFFFFFBFFFFFFF; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'hFFDFFFFFBFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"814813\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h40380000000000FE; - ReadData3E = 64'h3FD0000000000000; - ans = 64'h3FD0000000000060; + ReadData2E = 64'h3FA264A710DB99C5; + ReadData3E = 64'h3FC000000000003B; + ans = 64'h3FC000000000003B; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -104383,12 +31842,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"818549\n"); + $fwrite(fp,"815814\n"); end - ReadData1E = 64'h4310010040000000; + ReadData1E = 64'hC3CAFD5994A4CBA9; ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'h373650909086FED3; - ans = 64'hC31001003FFFFFFF; + ReadData3E = 64'h001C96E21035B3C8; + ans = 64'h43CAFD5994A4CBA8; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -104422,12 +31881,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"818855\n"); + $fwrite(fp,"816815\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hCA64000000000FFF; - ReadData3E = 64'hC3E800000000FFFF; - ans = 64'hC724000000000FFF; + ReadData2E = 64'h43D76047BD2F53F0; + ReadData3E = 64'h8010000000000001; + ans = 64'h40976047BD2F53EF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -104461,12 +31920,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"819161\n"); + $fwrite(fp,"817816\n"); end - ReadData1E = 64'h447FFFEFFFFFFFFC; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'hC47FFFEFFFFFFFFA; + ReadData1E = 64'hC01A656E823683EE; + ReadData2E = 64'h42FFFFFFFF7FFFDF; + ReadData3E = 64'hBEEFFFFFFBFFFFFE; + ans = 64'hC32A656E81CCEE19; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -104500,324 +31959,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"819467\n"); - end - ReadData1E = 64'hB800000400000000; - ReadData2E = 64'h400FFBFFFFDFFFFE; - ReadData3E = 64'hC9B000000000401E; - ans = 64'hC9B000000000401E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"819773\n"); + $fwrite(fp,"818817\n"); end ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'h3FF000000000DFFF; - ans = 64'h3FF000000000DFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"820079\n"); - end - ReadData1E = 64'hBE40000020008000; - ReadData2E = 64'hC7ECCDDA5176EED4; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"820385\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'hC010000000000001; - ans = 64'hC010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"820691\n"); - end - ReadData1E = 64'hD57E91FB06496C86; - ReadData2E = 64'h381B4E4682CE5ADB; - ReadData3E = 64'hDC6BFFFFFEFFFFFE; - ans = 64'hDC6BFFFFFEFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"820997\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hBF110000000001FF; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBCA0008800000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"821303\n"); - end - ReadData1E = 64'hC0B0200000000003; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'hBFC1D73DADDDF9B6; - ans = 64'h40B01FDC5184A448; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"821609\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC009137C731CDB82; - ReadData3E = 64'h44500000001FFFDF; - ans = 64'h44500000001FFFDF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"821915\n"); - end - ReadData1E = 64'h3F0FFBFFFFFFFFFA; ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hC000003FF7FFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hBCBFFFFFFFFFFFFD; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -104851,4183 +31998,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"822221\n"); + $fwrite(fp,"819818\n"); end - ReadData1E = 64'hBFDF3226C82519BB; - ReadData2E = 64'h093FFFFFFFFC0002; - ReadData3E = 64'hBBEF000000010000; - ans = 64'hBBEF000000010000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"822527\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'h800FFFFFFFF00000; - ans = 64'hBCBFFFFFFFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"822833\n"); - end - ReadData1E = 64'h40300FFDFFFFFFFF; - ReadData2E = 64'h411FFFFFFFFDFFFF; - ReadData3E = 64'hFFE0000000000001; - ans = 64'hFFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"823139\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'h400FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"823445\n"); - end - ReadData1E = 64'h52B0200000FFFFFE; - ReadData2E = 64'hC7FDC39DD92F7A18; - ReadData3E = 64'hC940002001FFFFFF; - ans = 64'hDABDFF2516BE12E6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"823751\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3FBF800001FFFFFF; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'h3C7F800001FFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"824057\n"); - end - ReadData1E = 64'h41C0010007FFFFFE; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'hA39000000403FFFF; - ans = 64'hC1D0010007FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"824363\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC7EBCC5F21936D2F; - ReadData3E = 64'hD65B21AA7893B120; - ans = 64'hD65B21AA7893B120; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"824669\n"); - end - ReadData1E = 64'hC010400000008000; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h4031400000007FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"824975\n"); - end - ReadData1E = 64'hBFD000003FFFFFFF; - ReadData2E = 64'h4060000020FFFFFE; - ReadData3E = 64'hC7FFE0000000003E; - ans = 64'hC7FFE0000000003E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"825281\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'hB9EFFFFFFFF60000; - ans = 64'hBCD000000000003E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"825587\n"); - end - ReadData1E = 64'h41D00000FFFFFFF7; - ReadData2E = 64'h0E8000000000027F; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'h434FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"825893\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"826199\n"); - end - ReadData1E = 64'hC03FFFFFEFFFFE00; - ReadData2E = 64'hC1B69575AD8E4938; - ReadData3E = 64'hC03EF1A51B0A9C79; - ans = 64'h42069575A14BFFCF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"826505\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h401FEFFFFFFFBFFE; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'h3CDFEFFFFFFFBFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"826811\n"); - end - ReadData1E = 64'hB8008E2BDAE7849A; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'h4D700008000003FF; - ans = 64'h4D700008000003FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"827117\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h802F800003FFFFFE; - ReadData3E = 64'h3CA21EADA7E7EABE; - ans = 64'h3CA21EADA7E7EABE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"827423\n"); - end - ReadData1E = 64'h40454B061F63C997; - ReadData2E = 64'hC010000000000001; - ReadData3E = 64'hBFE0000000000001; - ans = 64'hC0655B061F63C998; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"827729\n"); - end - ReadData1E = 64'hC3DFFDFF00000000; - ReadData2E = 64'hC34000FFFFFFFFEF; - ReadData3E = 64'h381FF7FFF8000000; - ans = 64'h472FFFFEDFEFFFDE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"828035\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'hFFE2D34305DB32DD; - ans = 64'hFFE2D34305DB32DD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"828341\n"); - end - ReadData1E = 64'hC3D4C997322DB688; - ReadData2E = 64'hC7EFFFFFE7FFFFFF; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'h4BD4C99722968522; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"828647\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h3FEFFFFFFFFFFFF0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"828953\n"); - end - ReadData1E = 64'h43401FFFFFFFFFEF; - ReadData2E = 64'hBFC6B4955343E8C0; - ReadData3E = 64'h3FACA027F5F02257; - ans = 64'hC316E1FE7DEA7079; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"829259\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC0717FFFFFFFFFFE; - ReadData3E = 64'h0000000000000000; - ans = 64'hBD317FFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"829565\n"); - end - ReadData1E = 64'h3F30200000007FFE; - ReadData2E = 64'hC340000000000000; - ReadData3E = 64'hBFEDFFF7FFFFFFFE; - ans = 64'hC28020000000877E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"829871\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h480FFF07FFFFFFFE; - ReadData3E = 64'hFFE0FFFFFFEFFFFF; - ans = 64'hFFE0FFFFFFEFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"830177\n"); - end - ReadData1E = 64'h4340000010400000; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'hC690000010400001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"830483\n"); - end - ReadData1E = 64'h801138665FBF5823; - ReadData2E = 64'h41C88AD4452DDA53; - ReadData3E = 64'h837330BE9EFFCD8A; - ans = 64'h837330BEAC34CFC6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"830789\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'hBE314AE1C1E96403; - ans = 64'hC0000000008A570E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"831095\n"); - end - ReadData1E = 64'h000FFFB800000000; - ReadData2E = 64'hBFDFFFFFFE020000; - ReadData3E = 64'h4010000000000000; - ans = 64'h4010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"831401\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'hBFE0000000000001; - ans = 64'hC011FFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"831707\n"); - end - ReadData1E = 64'hBE5F0A7A7523EF50; - ReadData2E = 64'hBFFFFFFFFFFC0010; - ReadData3E = 64'h3F800403FFFFFFFF; - ans = 64'h3F80040BC29E9D47; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"832013\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h3F7FFFC00000001E; - ReadData3E = 64'h7FF0000000000001; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"832319\n"); - end - ReadData1E = 64'h93B00004000FFFFE; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'h3FAF4698DF3288FF; - ans = 64'h3FAF4698DF3288FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"832625\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC0CFFF7FFFFEFFFF; - ReadData3E = 64'h5175F45600193651; - ans = 64'h5175F45600193651; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"832931\n"); - end - ReadData1E = 64'h41CDFFFFFFFFF000; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"833237\n"); - end - ReadData1E = 64'h413FFFFFE0001000; - ReadData2E = 64'h43400000FFF7FFFF; - ReadData3E = 64'hD649F219711FB93B; - ans = 64'hD649F219711FB93B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"833543\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'hB812005F57A6E0BC; - ans = 64'hFCA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"833849\n"); - end - ReadData1E = 64'hC91FFEFFFFFFFFF0; - ReadData2E = 64'hDB00080000FFFFFF; - ReadData3E = 64'hC000000000000001; - ans = 64'h6430077FC0FFF7F7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"834155\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'hFCAFFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"834461\n"); - end - ReadData1E = 64'h403F4AF7E517A201; - ReadData2E = 64'h41CFFC000000001F; - ReadData3E = 64'hCC6000000001E000; - ans = 64'hCC6000000001E000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"834767\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h801FFFFFDFEFFFFE; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"835073\n"); - end - ReadData1E = 64'h37F000000000000F; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'hDE9FF7FFFFFFFF7E; - ans = 64'hF7F000000000000E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"835379\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hC00007FFFFFFFFF8; - ReadData3E = 64'h3FDD260F6EE2590B; - ans = 64'h3FDD260F6EE25903; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"835685\n"); - end - ReadData1E = 64'h3FFC0000003FFFFF; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'h3CA0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"835991\n"); - end - ReadData1E = 64'hC1EF000400000000; - ReadData2E = 64'h800000000FFFFFFE; - ReadData3E = 64'hBCA00800000000FF; - ans = 64'hBCA00800000000FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"836297\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'h4BEFFFFFFFFFFFF5; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"836603\n"); - end - ReadData1E = 64'h41EFFFBF7FFFFFFE; - ReadData2E = 64'h4000400000000010; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h42003FDF3F10000F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"836909\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"837215\n"); - end - ReadData1E = 64'h800000000FFFFBFE; - ReadData2E = 64'h3FFF168ED14CE3D1; - ReadData3E = 64'hC0301FFF7FFFFFFE; - ans = 64'hC0301FFF7FFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"837521\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'h2200000000000420; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'h434FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"837827\n"); - end - ReadData1E = 64'hC1FF0000000001FF; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'h000FFF0008000000; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"838133\n"); - end - ReadData1E = 64'h3CAFFFFFFFFFFFFE; - ReadData2E = 64'hBF5FFFFFFFDFFFFF; - ReadData3E = 64'h34B00FFFFFFFFFBE; - ans = 64'hBC1FFFFFFFDFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"838439\n"); - end - ReadData1E = 64'hC1FFFFFFBFFFFFFF; - ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'h8010000000000001; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"838745\n"); - end - ReadData1E = 64'hB7F0000040000020; - ReadData2E = 64'h37FFFFFF00000002; - ReadData3E = 64'h4057FFFFFFFF7FFF; - ans = 64'h4057FFFFFFFF7FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"839051\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'h37E000081FFFFFFF; - ans = 64'h37E000081FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"839357\n"); - end - ReadData1E = 64'h41408003FFFFFFFF; - ReadData2E = 64'h3FC07FFFFFFFFEFE; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'h411104001FFFFEF5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"839663\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h3CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"839969\n"); - end - ReadData1E = 64'h43EBF2B862C4592E; - ReadData2E = 64'hC09F6B9863FDA598; - ReadData3E = 64'h40100DFFFFFFFFFE; - ans = 64'hC49B711B5078BE27; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"840275\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h47F00000007EFFFF; - ReadData3E = 64'hC340000000000000; - ans = 64'h47D00000007EFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"840581\n"); - end - ReadData1E = 64'hBF9FFC0000001FFE; - ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'hA48FFBFFFFFFFF7E; - ans = 64'hA48FFBFFFFFFFF7E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"840887\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hC021FFFFFFFFF7FE; - ReadData3E = 64'hCC7FFFFFDFFFFDFF; - ans = 64'hCC7FFFFFDFFFFDFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"841193\n"); - end - ReadData1E = 64'h4017A9EC462C22C8; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h003BA9EC462C22C5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"841499\n"); - end - ReadData1E = 64'hB7F0000000000086; - ReadData2E = 64'h4BFFFFFFE000FFFE; - ReadData3E = 64'hBF70000002000000; - ans = 64'hC3FFFFFFE001010A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"841805\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'h80027DBC297E85BC; - ans = 64'h00018243D6817A44; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"842111\n"); - end - ReadData1E = 64'h8540020000000FFF; - ReadData2E = 64'hBFFF3B0F41DCC6B0; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h3FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"842417\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'h8010000000000001; - ans = 64'h800C000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"842723\n"); - end - ReadData1E = 64'h47F003FFFFFFFDFF; - ReadData2E = 64'hC3DFFFEFFFFFC000; - ReadData3E = 64'h43F400000000000F; - ans = 64'hCBE003F7FDFFDDF7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"843029\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h00000003FFFFFFFC; - ReadData3E = 64'h4010000000000001; - ans = 64'h4010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"843335\n"); - end - ReadData1E = 64'h402FF0000007FFFE; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'h3EEFFFFFFFFC4000; - ans = 64'h3EEFFFFFFFFC4000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"843641\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hB7EFFFFFBFFFFF7E; - ReadData3E = 64'hBFCE000000100000; - ans = 64'hBFCE000000100000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"843947\n"); - end - ReadData1E = 64'hEBB4000FFFFFFFFF; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"844253\n"); - end - ReadData1E = 64'h001CB8573191EF15; - ReadData2E = 64'hC19000800003FFFF; - ReadData3E = 64'h41EFFFFFE03FFFFF; - ans = 64'h41EFFFFFE03FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"844559\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'hBFC00003FFFF7FFE; - ans = 64'hBFC00003FFFF7FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"844865\n"); - end - ReadData1E = 64'h3334BE2D7996C148; - ReadData2E = 64'h3EC03F7FFFFFFFFE; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hBFD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"845171\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h3C80000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"845477\n"); - end - ReadData1E = 64'h800F800000080000; - ReadData2E = 64'h7FD00000000037FF; - ReadData3E = 64'h483FFFFFDFF7FFFF; - ans = 64'h483FFFFFDFF7FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"845783\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3FF000000FBFFFFE; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hC00DFFFFFE07FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"846089\n"); - end - ReadData1E = 64'hA96FFFFFEFFBFFFF; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'hBFFBFFFFDFFFFFFF; - ans = 64'hBFFBFFFFDFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"846395\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h62BBFFFFEFFFFFFF; - ReadData3E = 64'h40300000403FFFFF; - ans = 64'h629BFFFFEFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"846701\n"); - end - ReadData1E = 64'h41CAB753F5C8C6D1; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"847007\n"); - end - ReadData1E = 64'hFFF16C91BA884B3B; - ReadData2E = 64'h52E000000001E000; - ReadData3E = 64'h5A8000000FFEFFFF; - ans = 64'hFFF96C91BA884B3B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"847313\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'h400EC0D680F9B3E5; - ans = 64'h400EC0D680F9B3E5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"847619\n"); - end - ReadData1E = 64'h3FB7999C7249E9A2; - ReadData2E = 64'hC1C0040FFFFFFFFE; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'hC1879F9A7302EE63; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"847925\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"848231\n"); - end - ReadData1E = 64'hBFE0000000000000; - ReadData2E = 64'h43C87A46755279AC; - ReadData3E = 64'hC00EAE236666A2DC; - ans = 64'hC3B87A46755279AC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"848537\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h400FFF7BFFFFFFFF; - ReadData3E = 64'h3FFFFFFFFFFFFFFE; - ans = 64'h4007FFDEFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"848843\n"); - end - ReadData1E = 64'h3F6FFFFFC0000010; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'h3F70000001FEFFFF; - ans = 64'h3F73FFFFF9FF0001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"849149\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3F8F73F460C4C31D; - ReadData3E = 64'h7FD542F883C0A5EF; - ans = 64'h7FD542F883C0A5EF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"849455\n"); - end - ReadData1E = 64'hBE70002003FFFFFE; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"849761\n"); - end - ReadData1E = 64'hC1C197CF2A7E3F8F; - ReadData2E = 64'hBFEFFFFFFFFF7FBE; - ReadData3E = 64'hC3CFFC00000FFFFF; - ans = 64'hC3CFFBFFFFFE6830; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"850067\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'hBFD0080000003FFE; - ans = 64'hBFC0100000007FFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"850373\n"); - end - ReadData1E = 64'h3FC00001FFFFDFFF; - ReadData2E = 64'hAF80000004100000; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'hAF500002040FE081; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"850679\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"850985\n"); - end - ReadData1E = 64'h417007FFDFFFFFFF; - ReadData2E = 64'h41F000FFFFFC0000; - ReadData3E = 64'hC0BFFFFFFFFFF880; - ans = 64'h437009005FF9FBFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"851291\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBFF011FFFFFFFFFF; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF4048000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"851597\n"); - end - ReadData1E = 64'hBEE04000007FFFFF; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'h4396138DF7EB9A59; - ans = 64'h4396138DF7EB9A59; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"851903\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBE1FFFBFFBFFFFFF; - ReadData3E = 64'hC7F00F8000000000; - ans = 64'hC7F00F8000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"852209\n"); - end - ReadData1E = 64'hB44FFFFFF000000F; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"852515\n"); - end - ReadData1E = 64'h0005396BB2A6A133; - ReadData2E = 64'h80214BC0C3457605; - ReadData3E = 64'hC02C6B4A0B5C3DD6; - ans = 64'hC02C6B4A0B5C3DD6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"852821\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'h7FD25208760C3106; - ans = 64'h7FD25208760C3106; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"853127\n"); - end - ReadData1E = 64'h34F00010003FFFFF; - ReadData2E = 64'h000335BE3408EDB3; - ReadData3E = 64'h0010000000000000; - ans = 64'h0010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"853433\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"853739\n"); - end - ReadData1E = 64'h3FF000FFFFFFFFFC; - ReadData2E = 64'hB807FFFFFFEFFFFE; - ReadData3E = 64'hC1F0000100000006; - ans = 64'hC1F0000100000006; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"854045\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h42BA5BD75A09BAF5; - ReadData3E = 64'h3FE0000000000001; - ans = 64'h429A5BD75A09BCF5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"854351\n"); - end - ReadData1E = 64'hC347ACE083F9E32E; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'h3F8020000FFFFFFF; - ans = 64'hC347ACE083F9E32D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"854657\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hB87850D0E3E0A2DD; - ReadData3E = 64'hBFD0000000FFFFDE; - ans = 64'hBFD0000000FFFFDE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"854963\n"); - end - ReadData1E = 64'hB80FF8000003FFFE; - ReadData2E = 64'h3FF0000000000000; + ReadData1E = 64'h401FFE00000FFFFF; + ReadData2E = 64'h8000404000000000; ReadData3E = 64'h401FFFFFFFFFFFFE; ans = 64'h401FFFFFFFFFFFFE; FrmE = 3'b000; @@ -109063,12 +32037,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"855269\n"); + $fwrite(fp,"820819\n"); end - ReadData1E = 64'h3FE000000000000C; - ReadData2E = 64'hC3F54C10FC0D1720; - ReadData3E = 64'hBFFFFFEFFF7FFFFF; - ans = 64'hC3E54C10FC0D1730; + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h41107FFFFFFFFBFE; + ans = 64'h41107FFFFFFFFBFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -109102,12 +32076,597 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"855575\n"); + $fwrite(fp,"821820\n"); + end + ReadData1E = 64'h3EA00000010000FF; + ReadData2E = 64'h2F0FEFFBFFFFFFFE; + ReadData3E = 64'h43F0010000040000; + ans = 64'h43F0010000040000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"822821\n"); + end + ReadData1E = 64'h3FCFFFFFF7FFC000; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hBFE7FFFFF7FFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"823822\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'hA3274A24FDEE6ECB; + ReadData3E = 64'h47FFC00000003FFF; + ans = 64'h47FFC00000003FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"824823\n"); + end + ReadData1E = 64'hBDCFFFF7BFFFFFFF; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'hB9607FFFFFFFFFEE; + ans = 64'h3DEFFFF7C0000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"825824\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'h7FFFFF7FFFFDFFFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'h7FFFFF7FFFFDFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"826825\n"); + end + ReadData1E = 64'h405FFFBF7FFFFFFE; + ReadData2E = 64'hC3F1D678E2BCDA92; + ReadData3E = 64'hC3C03FFFFFFFBFFE; + ans = 64'hC461DA64EE71317C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"827826\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"828827\n"); + end + ReadData1E = 64'h406FFFEFFFFFFDFF; + ReadData2E = 64'h434B16AB5EA08BCB; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h43CB169DD34ADAC8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"829828\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h2260000002000200; + ans = 64'hC00FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"830829\n"); + end + ReadData1E = 64'h41DFFFF7FFFFBFFE; + ReadData2E = 64'h43FFF7F7FFFFFFFE; + ReadData3E = 64'h41800207FFFFFFFE; + ans = 64'h45EFF7F00201C00C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"831830\n"); + end + ReadData1E = 64'hAD5000000FFFFF7F; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'h6D5000000FFFFF7E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"832831\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'h434BFDFFFFFFFFFF; + ReadData3E = 64'h3FE0048000000000; + ans = 64'h400FFF1FFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"833832\n"); + end + ReadData1E = 64'h43E00000003FFC00; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h41D0000010040000; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"834833\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFFFFE; + ReadData2E = 64'h43EFFFF7DFFFFFFF; + ReadData3E = 64'h4000000000000001; + ans = 64'h40B001FBEFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"835834\n"); + end + ReadData1E = 64'h7FF4BCB484A9BE81; + ReadData2E = 64'hBFB0007F7FFFFFFE; + ReadData3E = 64'hBFE0000017FFFFFF; + ans = 64'h7FFCBCB484A9BE81; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"836835\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'h43FFFFFFFFF80040; - ans = 64'h43FFFFFFFFF80040; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -109141,12 +32700,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"855881\n"); + $fwrite(fp,"837836\n"); end - ReadData1E = 64'h41C2D222AA9A0638; - ReadData2E = 64'h43EFFFEFFFEFFFFF; - ReadData3E = 64'h8000000000000001; - ans = 64'h45C2D219417F47D9; + ReadData1E = 64'hC3CF5D4E67E932A1; + ReadData2E = 64'hC032000000007FFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h4411A47C1A73A9EF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -109180,12 +32739,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"856187\n"); + $fwrite(fp,"838837\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h398FFFFFFFFFFFEE; + ans = 64'h398FFFFFFFFFFFEE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -109219,7 +32778,553 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"856493\n"); + $fwrite(fp,"839838\n"); + end + ReadData1E = 64'hC006738A5CD5527E; + ReadData2E = 64'h41E00008000000FF; + ReadData3E = 64'hB7E00011FFFFFFFF; + ans = 64'hC1F67395969A824E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"840839\n"); + end + ReadData1E = 64'hC00000003FFFFFFA; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"841840\n"); + end + ReadData1E = 64'h3FD0000000000000; + ReadData2E = 64'hBFF03FFFFFFDFFFE; + ReadData3E = 64'hC44D0E13B096B93A; + ans = 64'hC44D0E13B096B93A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"842841\n"); + end + ReadData1E = 64'hC1F000000FFF8000; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'hB640001FF7FFFFFE; + ans = 64'hBEA000000FFF8000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"843842\n"); + end + ReadData1E = 64'h3FD0000000000000; + ReadData2E = 64'h027D9DFB69014426; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"844843\n"); + end + ReadData1E = 64'hB530008000000000; + ReadData2E = 64'hBFCFFFFE7FFFFFFF; + ReadData3E = 64'h41F0000FFFFFFFBF; + ans = 64'h41F0000FFFFFFFBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"845844\n"); + end + ReadData1E = 64'h3FD0000000000000; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FE1FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"846845\n"); + end + ReadData1E = 64'h3CAFFFFFFFFFE007; + ReadData2E = 64'h489003FFFFFE0000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"847846\n"); + end + ReadData1E = 64'h3FD0000000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'hC010000040002000; + ans = 64'hC00F000080004000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"848847\n"); + end + ReadData1E = 64'h41EFFEFFFDFFFFFE; + ReadData2E = 64'hC3EFFFEFFFFFFF7E; + ReadData3E = 64'hC54192276A53048A; + ans = 64'hC5F001AA442D4A9F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"849848\n"); + end + ReadData1E = 64'h3E0FFC00000007FF; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF00000001FFC00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"850849\n"); + end + ReadData1E = 64'h3FD0000000000000; + ReadData2E = 64'hFFE00000000BFFFE; + ReadData3E = 64'h5643589588DFAF05; + ans = 64'hFFC00000000BFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"851850\n"); + end + ReadData1E = 64'h3FCADA8A3B85FA49; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hB80FFFFFFFF7BFFE; + ans = 64'h3FCADA8A3B85FA47; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"852851\n"); + end + ReadData1E = 64'h3FD0000000000000; + ReadData2E = 64'h47FFFFF9FFFFFFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h47DFFFF9FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"853852\n"); end ReadData1E = 64'hBFE0800000001FFF; ReadData2E = 64'h3FDFFFFFFE0001FF; @@ -109258,51 +33363,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"856799\n"); + $fwrite(fp,"854853\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hB810080010000000; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hBFDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"857105\n"); - end - ReadData1E = 64'h402FFFFFFFFBFFDF; ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'h405BFFFFBFFFFFFF; - ans = 64'h4061FFFFDFFF7FFB; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -109336,324 +33402,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"857411\n"); + $fwrite(fp,"855854\n"); + end + ReadData1E = 64'h3453348E11AB8B5E; + ReadData2E = 64'hC1F2DAB5EE548E31; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"856855\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hC1CFFF7FFFFEFFFF; - ReadData3E = 64'h79E000FFFFFFFFFD; - ans = 64'h79E000FFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"857717\n"); - end - ReadData1E = 64'h3FDF8E1FB8E7AC41; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'hC010000000000000; - ans = 64'hC0081C7811C614F0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"858023\n"); - end - ReadData1E = 64'hF4D0700000000000; - ReadData2E = 64'h4061AE8809F49782; - ReadData3E = 64'hC3EFFFFFF7FFFF7F; - ans = 64'hF5422A4DC23A47A7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"858329\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'h7FD00000000003EF; - ans = 64'h7FD00000000003EF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"858635\n"); - end - ReadData1E = 64'hB7F0000FBFFFFFFF; - ReadData2E = 64'h3FC4294C9A3326B1; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"858941\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'h4020FFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"859247\n"); - end - ReadData1E = 64'h37F000000FFFDFFE; - ReadData2E = 64'h0B900040000007FF; - ReadData3E = 64'hC61000407FFFFFFF; - ans = 64'hC61000407FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"859553\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hC7EFFFFFFFBFFFFA; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'hC7CFFFFFFFBFFFFA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"859859\n"); - end - ReadData1E = 64'h408FC007FFFFFFFE; ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'hC0000000080FFFFF; - ans = 64'h40AFBC07FFFDFBFD; + ReadData3E = 64'h19803DFFFFFFFFFE; + ans = 64'h3FEFFFFFFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -109687,12 +33480,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"860165\n"); + $fwrite(fp,"857856\n"); end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hC7E007FFFFFFBFFE; - ReadData3E = 64'h400000001FFFEFFF; - ans = 64'hC7C007FFFFFFBFFE; + ReadData1E = 64'h3FEFFE007FFFFFFE; + ReadData2E = 64'hC1EFFFFFFFFBFDFF; + ReadData3E = 64'h4040009FFFFFFFFE; + ans = 64'hC1EFFE007BFBD63D; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -109726,244 +33519,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"860471\n"); + $fwrite(fp,"858857\n"); end - ReadData1E = 64'h3FBFF80000000040; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'h4000000000000001; - ans = 64'h4003FF0000000009; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"860777\n"); - end - ReadData1E = 64'hC342000FFFFFFFFF; - ReadData2E = 64'hBFF00000000001FD; - ReadData3E = 64'h43FF0000000007FE; - ans = 64'h43FF0240020007FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"861083\n"); - end - ReadData1E = 64'h3FD0000000000000; + ReadData1E = 64'hB7CFFFFFF0FFFFFE; ReadData2E = 64'h4010000000000000; - ReadData3E = 64'hC3E4000000200000; - ans = 64'hC3E4000000200000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"861389\n"); - end - ReadData1E = 64'h464010003FFFFFFE; - ReadData2E = 64'h42300000800FFFFF; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"861695\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h4010000000000000; - ReadData3E = 64'hC010000000000000; - ans = 64'hC008000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"862001\n"); - end - ReadData1E = 64'h404000020000001F; - ReadData2E = 64'hFA9FFFC000001FFF; - ReadData3E = 64'hC68FFFFFFFFFFB80; - ans = 64'hFAEFFFC3FFF8203D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"862307\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h9950008000000003; ReadData3E = 64'hBCA0000000000000; ans = 64'hBCA0000000000000; FrmE = 3'b000; @@ -109999,1024 +33558,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"862613\n"); - end - ReadData1E = 64'hBFFFFF0000100000; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'h40C5214A8EE75583; - ans = 64'h40C51D4AAEE75383; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"862919\n"); + $fwrite(fp,"859858\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h5153FFFFFFFFBFFF; - ReadData3E = 64'hC35001FFFF000000; - ans = 64'h5133FFFFFFFFBFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"863225\n"); - end - ReadData1E = 64'hFFDFFFFFFFFFFEBE; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"863531\n"); - end - ReadData1E = 64'hFFF8B44D2CF18037; - ReadData2E = 64'h3D200000043FFFFF; - ReadData3E = 64'h43E7FBFFFFFFFFFF; - ans = 64'hFFF8B44D2CF18037; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"863837\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'h41E000800000001E; - ans = 64'h41E000800040001E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"864143\n"); - end - ReadData1E = 64'h3FB0800000000003; - ReadData2E = 64'hB9600400007FFFFE; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"864449\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'h4000000000000001; - ans = 64'h4320000000000004; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"864755\n"); - end - ReadData1E = 64'h3DFFFFFFEFDFFFFF; - ReadData2E = 64'h43D0000FFFBFFFFF; - ReadData3E = 64'h802FEFFDFFFFFFFE; - ans = 64'h41E0000FF7AFF7EF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"865061\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3E6ABE5E424DBD3F; - ReadData3E = 64'h0010000000000001; - ans = 64'h3E4ABE5E424DBD3F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"865367\n"); - end - ReadData1E = 64'hBFB909D69E02A222; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'h380EFFFFFFFFFFEF; - ans = 64'hC30909D69E02A224; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"865673\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h38100000007EFFFF; - ReadData3E = 64'hC39FFFFFFE1FFFFF; - ans = 64'hC39FFFFFFE1FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"865979\n"); - end - ReadData1E = 64'h002FFFFFFF000400; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'h3FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"866285\n"); - end - ReadData1E = 64'h453FFFFFF0000003; - ReadData2E = 64'h47F00000047FFFFF; - ReadData3E = 64'hC0238DB0F8672290; - ans = 64'h4D3FFFFFF8FFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"866591\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'hC1E7E7CD6D9B2D7E; - ans = 64'h432FFFFE81832925; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"866897\n"); - end - ReadData1E = 64'h3FCC803E813F7834; - ReadData2E = 64'hC3E010000001FFFE; - ReadData3E = 64'h4340000000000001; - ans = 64'hC3BC7CBEBFC447B0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"867203\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'h432FFFFFFFFFFFFA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"867509\n"); - end - ReadData1E = 64'h052FF00004000000; - ReadData2E = 64'h47E007FFFE000000; - ReadData3E = 64'hDBE2000000007FFE; - ans = 64'hDBE2000000007FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"867815\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBFE00FC000000000; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'hBFC00FC000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"868121\n"); - end - ReadData1E = 64'hC3DC1BC00754990F; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'hD87E57C40FADB738; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"868427\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3E10010007FFFFFE; - ReadData3E = 64'h413000000007FFFF; - ans = 64'h4130000000080000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"868733\n"); - end - ReadData1E = 64'h3EA1DF1B96B50BDF; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'hBFE0000000000000; - ans = 64'h7E91DF1B96B50BE0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"869039\n"); - end - ReadData1E = 64'h9B50000000000FEE; - ReadData2E = 64'hBFFFE00000080000; - ReadData3E = 64'hFFF02B3B3E780E07; - ans = 64'hFFF82B3B3E780E07; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"869345\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'h401C08C927D263F5; - ans = 64'h7FCFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"869651\n"); - end - ReadData1E = 64'h37EEFBFFFFFFFFFF; - ReadData2E = 64'hDFB0002001000000; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hD7AEFC3DF9EFBFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"869957\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'h7FCFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"870263\n"); - end - ReadData1E = 64'h3ECFFFFC000000FF; - ReadData2E = 64'hC1FFFE3FFFFFFFFE; - ReadData3E = 64'hFFFFFEFFFFFFF7FF; - ans = 64'hFFFFFEFFFFFFF7FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"870569\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBF0FEF8000000000; + ReadData2E = 64'h4010FEFFFFFFFFFE; ReadData3E = 64'hFFFFFFFFFFFFFFFE; ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; @@ -111052,12 +33597,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"870875\n"); + $fwrite(fp,"860859\n"); end - ReadData1E = 64'h2550003FFFFFFFEF; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'hAAA103DECE05BF0F; - ans = 64'h7FF0000000000000; + ReadData1E = 64'hC3F3F711BA4A9A4F; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h40AFFFFFFE000FFF; + ans = 64'hC423F711BA4A9A4E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -111091,12 +33636,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"871181\n"); + $fwrite(fp,"861860\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hFFFF0000000001FE; - ReadData3E = 64'h2D80000000001FF7; - ans = 64'hFFFF0000000001FE; + ReadData2E = 64'hC28FFFFFFFFEFFFB; + ReadData3E = 64'h4340000000000001; + ans = 64'h433FFF000000000A; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -111130,12 +33675,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"871487\n"); + $fwrite(fp,"862861\n"); end - ReadData1E = 64'h41D7748AB1A3FE5C; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h7FF8000000000001; + ReadData1E = 64'hBC2FEFFFFFFFEFFF; + ReadData2E = 64'hBB4000000001FFDE; + ReadData3E = 64'hC1FC0FFFFFFFFFFF; + ans = 64'hC1FC0FFFFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -111169,51 +33714,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"871793\n"); - end - ReadData1E = 64'h800D0D06EE913F9A; - ReadData2E = 64'h3DFFE0007FFFFFFE; - ReadData3E = 64'h3FCFDFFFFFFFDFFE; - ans = 64'h3FCFDFFFFFFFDFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"872099\n"); + $fwrite(fp,"863862\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'hC000523B717EC726; - ans = 64'h7FF8000000000001; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC347FFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -111247,12 +33753,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"872405\n"); + $fwrite(fp,"864863\n"); end - ReadData1E = 64'hC1F4B64F0908F803; - ReadData2E = 64'h2EF00008000001FF; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h400FFFFFFFFFFFFE; + ReadData1E = 64'h41FFF80003FFFFFE; + ReadData2E = 64'hBE7000001FFFBFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC07FF00043EF8024; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -111286,11 +33792,167 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"872711\n"); + $fwrite(fp,"865864\n"); end ReadData1E = 64'h3FD0000000000000; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'h5A57FDFFFFFFFFFF; + ans = 64'h7FC0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"866865\n"); + end + ReadData1E = 64'hC027E00000000000; + ReadData2E = 64'h3F8FFFFFFFFFD800; + ReadData3E = 64'h7FEFFFC020000000; + ans = 64'h7FEFFFC020000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"867866\n"); + end + ReadData1E = 64'h402F00001FFFFFFF; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"868867\n"); + end + ReadData1E = 64'h3FD0000000000000; + ReadData2E = 64'h417F07FFFFFFFFFF; + ReadData3E = 64'h43EF007FFFFFFFFF; + ans = 64'h43EF008000000F83; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"869868\n"); + end + ReadData1E = 64'hC066A427EDC5EB7D; ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'hBFE0000000000000; + ReadData3E = 64'hC13FFFFFFFEFBFFE; ans = 64'h7FFFFFFFFFFFFFFF; FrmE = 3'b000; #10 @@ -111325,51 +33987,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"873017\n"); - end - ReadData1E = 64'h47EFFFFC00000FFF; - ReadData2E = 64'hC7F0000000A00000; - ReadData3E = 64'hBF8FFFFFFFF803FF; - ans = 64'hCFEFFFFC01400FD7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"873323\n"); + $fwrite(fp,"870869\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h41D81517C3598347; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; + ReadData2E = 64'h3FCA31A5D1FF7D0C; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFEE5CE5A2E00831; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -111403,12 +34026,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"873629\n"); + $fwrite(fp,"871870\n"); end - ReadData1E = 64'h47F55D8D580F7615; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'hC3BF17E3E4C41B97; - ans = 64'h7FFFFFFFFFFFFFFE; + ReadData1E = 64'hC06FFFFFFFF8000F; + ReadData2E = 64'h0340000FFFFFF000; + ReadData3E = 64'h7FF07FFFFFEFFFFE; + ans = 64'h7FF87FFFFFEFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -111442,207 +34065,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"873935\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBCA1CA7B0D7924D0; - ReadData3E = 64'h002A7B153AF12BAD; - ans = 64'hBC81CA7B0D7924D0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"874241\n"); - end - ReadData1E = 64'hC7163FA8199608CB; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'hBCAFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"874547\n"); - end - ReadData1E = 64'hBFC00001FDFFFFFF; - ReadData2E = 64'hC4D0000020000007; - ReadData3E = 64'hE2EFFFFBFFFFFFFE; - ans = 64'hE2EFFFFBFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"874853\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'hC417FFFFFFFFFFBF; - ans = 64'hC417FFFFFFFFFFBF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"875159\n"); - end - ReadData1E = 64'h801FFFFFFDFFFF7F; - ReadData2E = 64'h7FD0000000008FFE; - ReadData3E = 64'hC000000000000000; - ans = 64'hC00FFFFFFF008FBD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"875465\n"); + $fwrite(fp,"872871\n"); end ReadData1E = 64'h3FD0000000000000; ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h3FD0000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -111676,12 +34104,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"875771\n"); + $fwrite(fp,"873872\n"); end - ReadData1E = 64'h3CA5C07DE83266F8; - ReadData2E = 64'h800FFFFFFFFFEF00; - ReadData3E = 64'h5770000010080000; - ans = 64'h5770000010080000; + ReadData1E = 64'h063FFFFF80000020; + ReadData2E = 64'h7FEA035EC795E012; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h463A035E5F88650E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -111715,207 +34143,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"876077\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h4DD000001FFFFFFA; - ReadData3E = 64'hFFE0000000000001; - ans = 64'hFFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"876383\n"); - end - ReadData1E = 64'hCEF4C8D3D8B55D06; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'hA51F200000000000; - ans = 64'hA51F200000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"876689\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hC0300000080003FF; - ReadData3E = 64'h43DD48A0CE4511A9; - ans = 64'h43DD48A0CE4511A9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"876995\n"); - end - ReadData1E = 64'h524B89CF496B0D8A; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'h926B89CF496B0D8A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"877301\n"); - end - ReadData1E = 64'h47F00002000000FF; - ReadData2E = 64'hB85000000001FFF7; - ReadData3E = 64'h41E0800000000000; - ans = 64'h41E07FFFF7FFFF00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"877607\n"); + $fwrite(fp,"874873\n"); end ReadData1E = 64'h3FD0000000000000; ReadData2E = 64'h8010000000000000; - ReadData3E = 64'h4030EE949384D389; - ans = 64'h4030EE949384D389; + ReadData3E = 64'hBECFA97E36391D35; + ans = 64'hBECFA97E36391D35; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -111949,12 +34182,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"877913\n"); + $fwrite(fp,"875874\n"); end - ReadData1E = 64'hBF00000001001FFE; - ReadData2E = 64'h415001FFFFFFFBFF; - ReadData3E = 64'h3FF0000000000001; - ans = 64'hC05FC40002007802; + ReadData1E = 64'hCDDFFFFF00000040; + ReadData2E = 64'hC0380003FFFFFFFF; + ReadData3E = 64'h963FBE32C8944AB1; + ans = 64'h4E2800033FFFE02F; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -111988,790 +34221,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"878219\n"); + $fwrite(fp,"876875\n"); end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'hBCAFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"878525\n"); - end - ReadData1E = 64'hC01E32185C15D267; - ReadData2E = 64'h40184C07F358ED80; - ReadData3E = 64'hBE69FFFFFFFFFFFF; - ans = 64'hC046ED50BFE8B8A0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"878831\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hCD200000000003BF; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'hCD000000000003BF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"879137\n"); - end - ReadData1E = 64'hC7F5F2DFDDF5DD2D; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'h20C00000007BFFFE; - ans = 64'h20C00000007BFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"879443\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hB810000000000FFC; - ReadData3E = 64'h400FBFFFFFFF7FFF; - ans = 64'h400FBFFFFFFF7FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"879749\n"); - end - ReadData1E = 64'h7FFFFFFFBFFFFF7F; + ReadData1E = 64'hC340001000000001; ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'h8010000000000000; - ans = 64'h7FFFFFFFBFFFFF7F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"880055\n"); - end - ReadData1E = 64'hBFDFFFFFFEFFFFFF; - ReadData2E = 64'hC044AF12B6A74C7E; - ReadData3E = 64'h3C251824E2D48BA5; - ans = 64'h4034AF12B601D3E8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"880361\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'hB7E0000040000007; - ans = 64'hBC80000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"880667\n"); - end - ReadData1E = 64'h3FB00000100003FE; - ReadData2E = 64'hC01FFFFF80001FFF; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hBFF7FFFFE80009DE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"880973\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'hBC80000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"881279\n"); - end - ReadData1E = 64'h401D507E92C5E594; - ReadData2E = 64'h000F620D896F063D; - ReadData3E = 64'hBE2FFFFEFFFFBFFF; - ans = 64'hBE2FFFFEFFFFBFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"881585\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBFEFFFFFFFFFBDFF; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'hC0207FFFFFFFFEF7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"881891\n"); - end - ReadData1E = 64'hC3D0002000010000; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'h002FFFFFFFBFFFFE; - ans = 64'h409000200000FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"882197\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h41ED56A3C3AB3F70; - ReadData3E = 64'hC3F0003FFFFFFFF7; - ans = 64'hC3F0003FFFFC5523; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"882503\n"); - end - ReadData1E = 64'h43EFFE000000007F; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'h0000000000000001; - ans = 64'hC0AFFE000000007D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"882809\n"); - end - ReadData1E = 64'h434FFFFF00000002; - ReadData2E = 64'hC1DBCB06C86758B7; - ReadData3E = 64'h406FE00000001000; - ans = 64'hC53BCB05EA0F2276; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"883115\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'h381F8003FFFFFFFF; - ans = 64'hBC8FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"883421\n"); - end - ReadData1E = 64'h4303C48ADE74C3B5; - ReadData2E = 64'h00200027FFFFFFFE; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'h3FDFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"883727\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'h8010000000000000; - ans = 64'hBFB0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"884033\n"); - end - ReadData1E = 64'hDE90020000007FFF; - ReadData2E = 64'h3FD0000400000010; - ReadData3E = 64'hC3EE5C580A6A45A4; - ans = 64'hDE7002040080800F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"884339\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h37E454181AF8A93E; ReadData3E = 64'h4010000000000000; ans = 64'h4010000000000000; FrmE = 3'b000; @@ -112807,51 +34260,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"884645\n"); - end - ReadData1E = 64'hFFE000200003FFFF; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'h0020CEB3FC1309E7; - ans = 64'h7FC0002000040000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"884951\n"); + $fwrite(fp,"877876\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3FB007FFFFFFFFBF; - ReadData3E = 64'hD00FFFFFFFFE0002; - ans = 64'hD00FFFFFFFFE0002; + ReadData2E = 64'hBCAFBA65C76915F8; + ReadData3E = 64'hBC3000020000007F; + ans = 64'hBC901D32EBB48AFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -112885,12 +34299,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"885257\n"); + $fwrite(fp,"878877\n"); end - ReadData1E = 64'hB7E0001001FFFFFF; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; + ReadData1E = 64'h3FEFFFFFFDFFEFFE; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h42EAB63F91DF10B8; + ans = 64'h42EAB63F91DF10B8; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -112924,441 +34338,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"885563\n"); - end - ReadData1E = 64'hBFF0000000000803; - ReadData2E = 64'hEADE000000400000; - ReadData3E = 64'h401FFBFFFFFFFFF0; - ans = 64'h6ADE000000400F06; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"885869\n"); + $fwrite(fp,"879878\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'hC17FFFFFFFF7FFFD; - ans = 64'hC180000000FBFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"886175\n"); - end - ReadData1E = 64'h4010005FFFFFFFFF; - ReadData2E = 64'h43E0000100400000; - ReadData3E = 64'hBFD0000000000000; - ans = 64'h440000610046017F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"886481\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'h0000000000000001; - ans = 64'hBFC0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"886787\n"); - end - ReadData1E = 64'hC21DFFFFDFFFFFFF; - ReadData2E = 64'h41EF7FFFFFFFFFFD; - ReadData3E = 64'h3FC2C86C00258B86; - ans = 64'hC41D87FFE07FFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"887093\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3FE0000081FFFFFF; - ReadData3E = 64'hC000000000000001; - ans = 64'hBFFDFFFFEFC00002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"887399\n"); - end - ReadData1E = 64'hBFB000000007C000; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'hBF5E0000003FFFFF; - ans = 64'h3F9E2000000B8002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"887705\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hB8000000000005FF; - ReadData3E = 64'h3FE00002001FFFFE; - ans = 64'h3FE00002001FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"888011\n"); - end - ReadData1E = 64'h3E3000100007FFFE; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"888317\n"); - end - ReadData1E = 64'hC3F0FFFFFF7FFFFF; - ReadData2E = 64'h41FFFEFFFFFFFFFB; - ReadData3E = 64'hBD9FFFFFFFFFFFDD; - ans = 64'hC600FF77FF8003FC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"888623\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'hD6DFFFFDFFFFDFFE; - ans = 64'hD6DFFFFDFFFFDFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"888929\n"); - end - ReadData1E = 64'h3CAFFFF7FFEFFFFF; - ReadData2E = 64'h3FFDB1E7398F283A; + ReadData2E = 64'h434B1D53BFA16F39; ReadData3E = 64'h3CA0000000000001; - ans = 64'h3CC2D8EFE6834071; + ans = 64'h432B1D53BFA16F39; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -113392,12 +34377,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"889235\n"); + $fwrite(fp,"880879\n"); + end + ReadData1E = 64'hBEDFFFFFEFFFFF80; + ReadData2E = 64'h9DB000001000003E; + ReadData3E = 64'hC3CFFFFFFFFFFF90; + ans = 64'hC3CFFFFFFFFFFF90; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"881880\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBFB0000000000011; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -113431,2038 +34455,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"889541\n"); + $fwrite(fp,"882881\n"); end - ReadData1E = 64'hC02FFFFF80003FFF; - ReadData2E = 64'h05B041FFFFFFFFFF; - ReadData3E = 64'hBFDFFEFFFFFFFFBE; - ans = 64'hBFDFFEFFFFFFFFBE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"889847\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3FF6779EE2033B07; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h4002CEF3DC406760; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"890153\n"); - end - ReadData1E = 64'h3FF044898012431F; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'h3EC774E18486AEBC; - ans = 64'hBFF044869176128E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"890459\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBFFFFFF000000000; - ReadData3E = 64'h4010000402000000; - ans = 64'h400C000A04000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"890765\n"); - end - ReadData1E = 64'hC2A0000008002000; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'h7FE0000000000000; - ans = 64'h7FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"891071\n"); - end - ReadData1E = 64'hBFA2EDC3DB985385; - ReadData2E = 64'h4043EFFFFFFFFFFE; - ReadData3E = 64'hC1FFFFFFFFFFFFFF; - ans = 64'hC2000000000BCB23; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"891377\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'h408000000000007E; - ans = 64'h407FF800000000FC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"891683\n"); - end - ReadData1E = 64'h0012D90EB735AC29; - ReadData2E = 64'h41E00000000006FF; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'h0202D90EB6F5B467; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"891989\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"892295\n"); - end - ReadData1E = 64'h6C26B0BFD2FBCAAE; - ReadData2E = 64'hC300000005000000; - ReadData3E = 64'h2380021000000000; - ans = 64'hEF36B0BFDA1306A0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"892601\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hF4100400007FFFFE; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hF3F00400007FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"892907\n"); - end - ReadData1E = 64'hC02FFFFFFFFFFE1F; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'h7FDFFFFFFFFF8004; - ans = 64'h7FDFFFFFFFFF8004; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"893213\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hBFFFFFFFFBFFEFFE; - ReadData3E = 64'h43F00040000000FF; - ans = 64'h43F00040000000FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"893519\n"); - end - ReadData1E = 64'h41EBFFFFFFFFFF80; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'hC340000000000001; - ans = 64'hC3400000E0000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"893825\n"); - end - ReadData1E = 64'h3C9B86D50A168045; - ReadData2E = 64'hFFDF7FFFFE000000; - ReadData3E = 64'hFFFFFFFFFF7FFFDF; - ans = 64'hFFFFFFFFFF7FFFDF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"894131\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'h3800003FFFFFEFFF; - ans = 64'hBFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"894437\n"); - end - ReadData1E = 64'h4023805779AA7BA6; - ReadData2E = 64'h41F0000000000000; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'h4223805779AA7BA6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"894743\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'h7FE0000000000000; - ans = 64'h7FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"895049\n"); - end - ReadData1E = 64'hB751FFFBFFFFFFFF; - ReadData2E = 64'hC3C9ED9349BBCC6D; - ReadData3E = 64'h38100000FFFFFFC0; - ans = 64'h3B2D2B3F378E7392; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"895355\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h7E1FFFFFFFFFDFF0; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h7DFFFFFFFFFFDFF0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"895661\n"); - end - ReadData1E = 64'hBAE0000000003FFF; - ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'hBFB35446159C93A3; - ans = 64'hBFB35446159C93A3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"895967\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h3A9DFFFFFFFFFEFF; - ReadData3E = 64'hB8000000FFFFFDFE; - ans = 64'h3A7DFFFFFFFFDEFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"896273\n"); - end - ReadData1E = 64'hBFCF52E5F0E06610; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'h4021F52E5F0E0660; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"896579\n"); - end - ReadData1E = 64'h802E487204168AE2; - ReadData2E = 64'h3FD0002080000000; - ReadData3E = 64'h7FDFFFFC01FFFFFF; - ans = 64'h7FDFFFFC01FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"896885\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hC010000000000001; - ReadData3E = 64'hC1F3FFFFFFFEFFFF; - ans = 64'hC1F40000000EFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"897191\n"); - end - ReadData1E = 64'hC01F000001000000; - ReadData2E = 64'hBFE000200001FFFF; - ReadData3E = 64'h8000000000000000; - ans = 64'h400F003E0103E1FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"897497\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hC010000000000001; - ReadData3E = 64'hC340000000000001; - ans = 64'hC340000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"897803\n"); - end - ReadData1E = 64'hB7F0220000000000; - ReadData2E = 64'h4804298279080EA6; - ReadData3E = 64'h43E0000FFFFFFFBE; - ans = 64'h43E0000FFFFFFFBE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"898109\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hC90000040000FFFE; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hC8E000040000FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"898415\n"); - end - ReadData1E = 64'h3FF1896CDCA1FBD1; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'h802400000FFFFFFF; - ans = 64'hC021896CDCA1FBD0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"898721\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hC01FFFBC00000000; - ReadData3E = 64'hB7E52B803F675515; - ans = 64'hBFFFFFBC00000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"899027\n"); - end - ReadData1E = 64'h41D3FD5D0A16B1AB; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'hC203FD5D0A36B1AA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"899333\n"); - end - ReadData1E = 64'hB7F0200000000004; - ReadData2E = 64'hBFBFFFFFFFFF00FF; - ReadData3E = 64'hDFB3322F1716D84C; - ans = 64'hDFB3322F1716D84C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"899639\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hC340000000000000; - ReadData3E = 64'hC7E0040000000000; - ans = 64'hC7E0040000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"899945\n"); - end - ReadData1E = 64'h43F020000003FFFF; - ReadData2E = 64'h0DF007FFFFFFC000; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"900251\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'hC31FFFFFFFFFFFE2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"900557\n"); - end - ReadData1E = 64'hC80BFFFFFFFF8000; - ReadData2E = 64'hC36D1CF2F5E2A67E; - ReadData3E = 64'hC1FFFFFFFF007FFE; - ans = 64'h4B8979549725DD3A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"900863\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hFFFB6A3A2432DE41; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'hFFFB6A3A2432DE41; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"901169\n"); - end - ReadData1E = 64'hC3E000000000407F; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'h3CAFFF9000000000; - ans = 64'h474000000000407E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"901475\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h2768D5A43EE64697; - ReadData3E = 64'h1AA00000FFFFBFFF; - ans = 64'h2748D5A43EE64697; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"901781\n"); - end - ReadData1E = 64'h380FFFFFFFFFFFFF; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'h4000000000000000; - ans = 64'h4000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"902087\n"); - end - ReadData1E = 64'hC13F3F19214DF452; - ReadData2E = 64'h3FF0001FFFF00000; - ReadData3E = 64'h402FFFFFFFFFC7FF; - ans = 64'hC13F3F479F60F7D5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"902393\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'h3C5020007FFFFFFF; - ans = 64'hFFC0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"902699\n"); - end - ReadData1E = 64'h3FEFFFFFF9FFFFFF; - ReadData2E = 64'h3F10000000008004; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"903005\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'hFFC0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"903311\n"); - end - ReadData1E = 64'h3FCFFFFFFC000010; - ReadData2E = 64'hBCA00000003FFBFE; - ReadData3E = 64'h5C6D7C81CE014EF9; - ans = 64'h5C6D7C81CE014EF9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"903617\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hC1FD2AEBDB57C7AA; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'hC1DD2AEBDB57C7AA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"903923\n"); - end - ReadData1E = 64'hC0121AB24E47D412; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'h403FC00000010000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"904229\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h1FB0002FFFFFFFFF; - ReadData3E = 64'h380FFFEFFFE00000; - ans = 64'h380FFFEFFFE00000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"904535\n"); - end - ReadData1E = 64'h800F795795E454AD; - ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'hBFF0000000000001; - ans = 64'h4006F2AF2BC8A959; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"904841\n"); - end - ReadData1E = 64'h47EFFFFFFFFEFDFF; - ReadData2E = 64'hC080000780000000; - ReadData3E = 64'hBFE0000FFFFFDFFE; - ans = 64'hC88000077FFF7EFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"905147\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'hFFD6C1C477639F3D; - ans = 64'hFFE360E23BB1CF9E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"905453\n"); - end - ReadData1E = 64'hB80FFC0000004000; - ReadData2E = 64'h3FDC7ACB3D8E0D56; + ReadData1E = 64'h380FE0000000FFFF; + ReadData2E = 64'hB817375F6751A4A0; ReadData3E = 64'hC34FFFFFFFFFFFFE; ans = 64'hC34FFFFFFFFFFFFE; FrmE = 3'b000; @@ -115498,12 +34494,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"905759\n"); + $fwrite(fp,"883882\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'h4000000000000000; - ans = 64'hFFF0000000000000; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hC3DC0FFFFFFFFFFF; + ans = 64'hC3DC0FFFFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -115537,12 +34533,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"906065\n"); + $fwrite(fp,"884883\n"); end - ReadData1E = 64'h405FFF01FFFFFFFE; - ReadData2E = 64'h471E00FFFFFFFFFF; - ReadData3E = 64'h41D000000FFF7FFF; - ans = 64'h478E0011D80FFFFD; + ReadData1E = 64'h5F3F7FFFDFFFFFFE; + ReadData2E = 64'hBFF0010002000000; + ReadData3E = 64'h2E5FFB8000000000; + ans = 64'hDF3F81F7E3EDFFFA; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -115576,12 +34572,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"906371\n"); + $fwrite(fp,"885884\n"); + end + ReadData1E = 64'hBFDFFFFFFFFF8003; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBD7FFF7FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"886885\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'h8EB00000017FFFFF; - ReadData3E = 64'h0010000000000000; - ans = 64'h8E900000017FFFFF; + ReadData2E = 64'h3CA3FFFF00000000; + ReadData3E = 64'h3FA2000000000000; + ans = 64'h3FA2000000000005; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -115615,12 +34650,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"906677\n"); + $fwrite(fp,"887886\n"); end - ReadData1E = 64'hFFD40000000001FF; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'hBFDFFFFFFC008000; - ans = 64'hFFF8000000000001; + ReadData1E = 64'h403FFFE000000002; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFC02; + ans = 64'hC0407FEFFFFFFFF2; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -115654,12 +34689,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"906983\n"); + $fwrite(fp,"888887\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hFFFFFFFFE0000200; - ReadData3E = 64'h38120EB5CFFF927A; - ans = 64'hFFFFFFFFE0000200; + ReadData2E = 64'h401BFFEFFFFFFFFE; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -115693,12 +34728,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"907289\n"); + $fwrite(fp,"889888\n"); end - ReadData1E = 64'hD960000000DFFFFF; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; + ReadData1E = 64'hC4E6997B875A9BB2; + ReadData2E = 64'hFFFFFFFFFC0003FF; + ReadData3E = 64'hC0700400000FFFFE; + ans = 64'hFFFFFFFFFC0003FF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -115732,128 +34767,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"907595\n"); - end - ReadData1E = 64'h40DFFFFFFC040000; - ReadData2E = 64'h7FE000000020FFFF; - ReadData3E = 64'hFFF00000007FFEFE; - ans = 64'hFFF80000007FFEFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"907901\n"); + $fwrite(fp,"890889\n"); end ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'h43EBFFFFFF7FFFFE; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"908207\n"); - end - ReadData1E = 64'h381000003FFFFFFF; - ReadData2E = 64'hBF1886CB0D330AA3; - ReadData3E = 64'h4340000000000000; - ans = 64'h4340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"908513\n"); - end - ReadData1E = 64'h3FD0000000000000; - ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'hBFF0000000000001; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; #10 @@ -115888,12 +34806,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"908819\n"); + $fwrite(fp,"891890\n"); end - ReadData1E = 64'h407ED04D6C9499F6; - ReadData2E = 64'h380FFFFEFFFBFFFE; - ReadData3E = 64'h3810000007FFFFE0; - ans = 64'h389EE04C76165486; + ReadData1E = 64'h001DD5DA12AB4E8C; + ReadData2E = 64'h43D0000FFEFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -115927,12 +34845,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"909125\n"); + $fwrite(fp,"892891\n"); end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hB02083FFFFFFFFFE; - ReadData3E = 64'h8000000000000001; - ans = 64'hB00083FFFFFFFFFF; + ReadData1E = 64'h3FD0000000000000; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hC08FFFFC00000200; + ans = 64'hC09003FE00000100; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -115966,12 +34884,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"909431\n"); + $fwrite(fp,"893892\n"); end - ReadData1E = 64'hB450000003DFFFFF; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'hC02FFFFFE0100000; - ans = 64'hC02FFFFFE0100000; + ReadData1E = 64'h2C9FFFFFFF7FFFF7; + ReadData2E = 64'hF8ADFFFFFFFFF000; + ReadData3E = 64'h5A2FFFD31118BB1F; + ans = 64'hE55DFFFFFF87EFF8; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -116005,12 +34923,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"909737\n"); + $fwrite(fp,"894893\n"); end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC3EFFFFF00003FFF; - ReadData3E = 64'hB7FF000000000002; - ans = 64'hC3CFFFFF00004001; + ReadData1E = 64'h3F7C000000002000; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'hBFAC000000001FFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -116044,12 +34962,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"910043\n"); + $fwrite(fp,"895894\n"); end - ReadData1E = 64'hB3DCBBCBF4FC7B3C; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFDFFFFFFFFFFFFE; + ReadData1E = 64'h3FD0000000000000; + ReadData2E = 64'hC7EDC332CF73D0BF; + ReadData3E = 64'h3C9FFFFFFFFEFFBF; + ans = 64'hC7CDC332CF73D0BF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -116083,12 +35001,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"910349\n"); + $fwrite(fp,"896895\n"); end - ReadData1E = 64'hC01FE7FFFFFFFFFF; - ReadData2E = 64'h43DFD4A9159E1E89; - ReadData3E = 64'h43C000000F7FFFFF; - ans = 64'hC40EBCC995D5E7F1; + ReadData1E = 64'hC1EFFFF000000001; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h30F6D9CE44CBCB45; + ans = 64'h453FFFF000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -116122,51 +35040,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"910655\n"); + $fwrite(fp,"897896\n"); end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'h59FFFE00000003FE; - ans = 64'h59FFFE00000003FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"910961\n"); - end - ReadData1E = 64'hC7FE000000001FFF; - ReadData2E = 64'hC3CFFFFFFFFC0100; + ReadData1E = 64'h3FD0000000000000; + ReadData2E = 64'hBFF080000000000F; ReadData3E = 64'hC010000000000001; - ans = 64'h4BDDFFFFFFFC60EF; + ans = 64'hC011080000000002; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -116200,12 +35079,402 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"911267\n"); + $fwrite(fp,"898897\n"); + end + ReadData1E = 64'hDE6D10D201A69CB0; + ReadData2E = 64'h3F6FEFFEFFFFFFFE; + ReadData3E = 64'hFFF0000002000001; + ans = 64'hFFF8000002000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"899898\n"); + end + ReadData1E = 64'h3FD0000000000000; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hFFC0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"900899\n"); + end + ReadData1E = 64'h47F8F7E71DA9C199; + ReadData2E = 64'h0BD0000000004000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"901900\n"); + end + ReadData1E = 64'h3FD0000000000000; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'hC0372CCA449FEE46; + ans = 64'hFFCFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"902901\n"); + end + ReadData1E = 64'h7FD5220B51609CF6; + ReadData2E = 64'hC030000000001020; + ReadData3E = 64'h7FDFBFFFFFFFFFDF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"903902\n"); + end + ReadData1E = 64'h3FFFFFFFC0000100; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"904903\n"); + end + ReadData1E = 64'h3FD0000000000000; + ReadData2E = 64'hFFEFD11A30704604; + ReadData3E = 64'hABB0000FDFFFFFFF; + ans = 64'hFFCFD11A30704604; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"905904\n"); + end + ReadData1E = 64'hBFC7FFFFFFFFFFEF; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'hC3F00000FFFFFFC0; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"906905\n"); + end + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'hBFE3EF03A2E70ABE; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FD6087E2E8C7AA2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"907906\n"); + end + ReadData1E = 64'h9A9EFFFFBFFFFFFF; + ReadData2E = 64'h3FFFEFFFFFFFDFFF; + ReadData3E = 64'h402FFFFFF0020000; + ans = 64'h402FFFFFF0020000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"908907\n"); end ReadData1E = 64'h3FD0000000000001; ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -116239,12 +35508,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"911573\n"); + $fwrite(fp,"909908\n"); end - ReadData1E = 64'h43D7DDC6B07E1242; - ReadData2E = 64'h7FD000000013FFFF; - ReadData3E = 64'hC34FFEFFFFFFFFE0; - ans = 64'h7FF0000000000000; + ReadData1E = 64'h3FFFFFFFFFF80200; + ReadData2E = 64'h43D1215F5736ED06; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -116278,285 +35547,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"911879\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h21E1000000001FFF; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"912185\n"); - end - ReadData1E = 64'h3BE00000008007FF; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'h45013FFFFFFFFFFF; - ans = 64'h45013FFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"912491\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h56DC000000000080; - ReadData3E = 64'hFFE0000000020010; - ans = 64'hFFE0000000020010; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"912797\n"); - end - ReadData1E = 64'h5D9EF3F25478434E; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'h3FD0000000000000; - ans = 64'h3FD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"913103\n"); - end - ReadData1E = 64'hC01F00000000003E; - ReadData2E = 64'h72A001FFFFFFEFFF; - ReadData3E = 64'hBCE000007FFBFFFF; - ans = 64'hF2CF03DFFFFFE13C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"913409\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'h3CAFC07FFFFFFFFE; - ans = 64'h3CAFC07FFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"913715\n"); - end - ReadData1E = 64'h429E54A46244D94F; - ReadData2E = 64'h41FEFFFFFFFFDFFE; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'h44AD61FF3F32942E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"914021\n"); + $fwrite(fp,"910909\n"); end ReadData1E = 64'h3FD0000000000001; ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h3FC000FFFFFFFFF7; + ans = 64'h3FC000FFFFFFFFF7; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -116590,12 +35586,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"914327\n"); + $fwrite(fp,"911910\n"); end - ReadData1E = 64'hC3E00007FE000000; - ReadData2E = 64'h949F7FFFFDFFFFFF; - ReadData3E = 64'hC1E000003FFFF7FE; - ans = 64'hC1E000003FFFF7FE; + ReadData1E = 64'hC1DFEFFEFFFFFFFE; + ReadData2E = 64'hC1C00400000001FE; + ReadData3E = 64'hC1EFFFFFFDFFFFFE; + ans = 64'h43AFF7FAFDC003F8; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -116629,129 +35625,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"914633\n"); + $fwrite(fp,"912911\n"); end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBCA42A241576C81A; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"914939\n"); - end - ReadData1E = 64'h41FFFF8000000010; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'h3FF048A52C15DD23; - ans = 64'h3FF048A52C15DD23; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"915245\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBFD9E0724E2AFED0; - ReadData3E = 64'hC3DEACACA3A5320B; - ans = 64'hC3DEACACA3A5320B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"915551\n"); - end - ReadData1E = 64'hC0FFFE00001FFFFF; + ReadData1E = 64'h47F5B56B2D44531E; ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBDAFFE10001FFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'h44A5B56B2D44531E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -116785,51 +35664,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"915857\n"); - end - ReadData1E = 64'hB80FFFF7FFFEFFFF; - ReadData2E = 64'h3F40000007FFFEFF; - ReadData3E = 64'h41EFFFFFEFBFFFFE; - ans = 64'h41EFFFFFEFBFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"916163\n"); + $fwrite(fp,"913912\n"); end ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'h43440000000003FF; - ans = 64'h43440000000003FF; + ReadData2E = 64'hBF80200000003FFF; + ReadData3E = 64'hBFEFFFFFFF80FFFF; + ans = 64'hBFF0080FFFC08020; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -116863,163 +35703,7 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"916469\n"); - end - ReadData1E = 64'h3FC199DB34D4E268; - ReadData2E = 64'h402FF800000003FE; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'h3FC9574BE07AF628; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"916775\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'h3FD0000000000000; - ans = 64'h3FD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"917081\n"); - end - ReadData1E = 64'hFFD0003FBFFFFFFE; - ReadData2E = 64'hC00FFFFCFFFFFFFF; - ReadData3E = 64'h380FFFE000080000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"917387\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h3F6FFFFFFFC40000; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"917693\n"); + $fwrite(fp,"914913\n"); end ReadData1E = 64'h4D60624F59DB184C; ReadData2E = 64'h3CAFFFFFFFFFFFFE; @@ -117058,12 +35742,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"917999\n"); + $fwrite(fp,"915914\n"); end ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h4019CB37CAB5578C; - ReadData3E = 64'h002FFFFDFFFEFFFF; - ans = 64'h3FF9CB37CAB5578E; + ReadData2E = 64'h4E9FFFFF80003FFF; + ReadData3E = 64'h8010000000000001; + ans = 64'h4E7FFFFF80004001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -117097,12 +35781,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"918305\n"); + $fwrite(fp,"916915\n"); end - ReadData1E = 64'hC3D5D738638A1944; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'hC3B5D738638A1944; + ReadData1E = 64'h201FF80000000000; + ReadData2E = 64'h3FEFFE7FFFFFFFFE; + ReadData3E = 64'h45EFFF01FFFFFFFF; + ans = 64'h45EFFF01FFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -117136,12 +35820,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"918611\n"); + $fwrite(fp,"917916\n"); end - ReadData1E = 64'hBFC00000FFFFFE00; - ReadData2E = 64'h30DFFE0000000007; - ReadData3E = 64'h3FDFFFF00000FFFE; - ans = 64'h3FDFFFF00000FFFE; + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h3FC0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -117177,10 +35861,10 @@ initial if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); $fwrite(fp,"918917\n"); end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'hB7E4C284CB2F81D3; - ans = 64'h3FB0000000000001; + ReadData1E = 64'h3FD0020010000000; + ReadData2E = 64'h0022800000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -117214,402 +35898,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"919223\n"); - end - ReadData1E = 64'hB7FEF5B5A6DCC55E; - ReadData2E = 64'hBFCFFFFFFF80003F; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h3FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"919529\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'hBCA0000000000001; - ans = 64'h3FAFFFFFFFFFFFF4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"919835\n"); - end - ReadData1E = 64'h4006E5FE7D1A8DC4; - ReadData2E = 64'h7FD80000001FFFFF; - ReadData3E = 64'h3F3000001FEFFFFF; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"920141\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h381FFFE000001000; - ReadData3E = 64'h4340000000000001; - ans = 64'h4340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"920447\n"); - end - ReadData1E = 64'h47EFFF7FFFEFFFFF; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'h40AFFFFFFFFFFF08; - ans = 64'h47DFFF7FFFEFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"920753\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC0A1FFFFFFFFC000; - ReadData3E = 64'hCF783ACF6657D485; - ans = 64'hCF783ACF6657D485; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"921059\n"); - end - ReadData1E = 64'h557BCB0C4F71816F; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'h556BCB0C4F71816D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"921365\n"); - end - ReadData1E = 64'h5920000107FFFFFF; - ReadData2E = 64'hBBD00000010003FF; - ReadData3E = 64'h2147FEFFFFFFFFFE; - ans = 64'hD50000010900040F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"921671\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'hC0355E7698BA0005; - ans = 64'hC0353E7698BA0005; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"921977\n"); - end - ReadData1E = 64'h802E001FFFFFFFFF; - ReadData2E = 64'hB79FFFFDFFDFFFFE; - ReadData3E = 64'hBFE0000000000001; - ans = 64'hBFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"922283\n"); + $fwrite(fp,"919918\n"); end ReadData1E = 64'h3FD0000000000001; ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'h3FC0000000000002; + ReadData3E = 64'hC050002040000000; + ans = 64'hC04FF04080000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -117643,12 +35937,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"922589\n"); + $fwrite(fp,"920919\n"); end - ReadData1E = 64'h43DFFFFFFFA00000; - ReadData2E = 64'hE0FFFE0000000000; - ReadData3E = 64'hC3EFF00010000000; - ans = 64'hE4EFFDFFFFA00600; + ReadData1E = 64'hC03004003FFFFFFE; + ReadData2E = 64'h403FFFFBFFFFFFFC; + ReadData3E = 64'h3FA0FFFFFFFFFFF6; + ans = 64'hC08003BA3F7FF7FC; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -117682,285 +35976,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"922895\n"); + $fwrite(fp,"921920\n"); end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC1D000002000007F; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC1B0000028000080; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"923201\n"); - end - ReadData1E = 64'hC027F3B5DBAB58EF; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'hC04FFF000001FFFF; - ans = 64'hC052FDF6BB766B1D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"923507\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h001FFFBDFFFFFFFE; - ReadData3E = 64'hBFDFFFFC01FFFFFF; - ans = 64'hBFDFFFFC01FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"923813\n"); - end - ReadData1E = 64'h3FCDA0B73B3E429D; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'h0000000000000000; - ans = 64'h3FCDA0B73B3E429B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"924119\n"); - end - ReadData1E = 64'h43EFFFFEFFFFFFEF; - ReadData2E = 64'hB1A7F7D6729904E6; - ReadData3E = 64'hAD80008000002000; - ans = 64'hB5A7F7D5B2DA5144; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"924425\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'h43F000800007FFFF; - ans = 64'h43F000800007FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"924731\n"); - end - ReadData1E = 64'h7CD00004000000FF; - ReadData2E = 64'h3CA7FFFFBFFFFFFF; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'h79880005BFFFF17D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"925037\n"); - end - ReadData1E = 64'h3FD0000000000001; + ReadData1E = 64'h401FFFFFFFFFC000; ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'h3FD0000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h40207FFFFFFFE000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -117994,51 +36015,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"925343\n"); - end - ReadData1E = 64'h3D5FEFFFFFDFFFFF; - ReadData2E = 64'h56B05A2CE13DEC1D; - ReadData3E = 64'hC1FFFFFFFF400000; - ans = 64'h542051FFCABCF2FA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"925649\n"); + $fwrite(fp,"922921\n"); end ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBFCFFFFDBFFFFFFE; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h400F800008FFFFFE; + ReadData2E = 64'h37F9CD0270410F4D; + ReadData3E = 64'hC060000000400800; + ans = 64'hC060000000400800; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -118072,90 +36054,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"925955\n"); + $fwrite(fp,"923922\n"); end - ReadData1E = 64'hBFC0000000000018; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'hC3F000000005FFFF; - ans = 64'hC3F000000005FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"926261\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hFFD26C3811E7D282; - ReadData3E = 64'h43E6E1E67A741F0C; - ans = 64'hFFB26C3811E7D283; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"926567\n"); - end - ReadData1E = 64'hBFC70E2F42B43FA9; + ReadData1E = 64'h41EF80000FFFFFFF; ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'h7FF0000000000001; - ans = 64'h7FF8000000000001; + ReadData3E = 64'h40500000005FFFFF; + ans = 64'h41FF800013FFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -118189,5587 +36093,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"926873\n"); - end - ReadData1E = 64'h3850000000000000; - ReadData2E = 64'h8010000000800080; - ReadData3E = 64'h3FB0020000000FFF; - ans = 64'h3FB0020000000FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"927179\n"); + $fwrite(fp,"924923\n"); end ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'hC3C0003F00000000; - ans = 64'hC3C0003F00000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"927485\n"); - end - ReadData1E = 64'h400643BE798DFA0B; - ReadData2E = 64'hBFDB38C21CCBA9FC; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hBFF2F0A652A03F0C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"927791\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'h0000000000000000; - ans = 64'h3FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"928097\n"); - end - ReadData1E = 64'hC1FFC00000000400; - ReadData2E = 64'hBFDFFFFEFFFDFFFE; - ReadData3E = 64'hC1D000200000007F; - ans = 64'h41E7BFEF01FE07BF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"928403\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hB04ED49F5FEFA1FE; - ReadData3E = 64'hC000000000000000; - ans = 64'hC000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"928709\n"); - end - ReadData1E = 64'h3810000040040000; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'hC7EFFFFFFFDEFFFE; - ans = 64'hC7EFFFFFFFDEFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"929015\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC1D0000000080400; - ReadData3E = 64'h3FBFFFFC07FFFFFF; - ans = 64'hC1AFFFFFFFD0080A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"929321\n"); - end - ReadData1E = 64'hC7E008000FFFFFFE; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"929627\n"); - end - ReadData1E = 64'h8155FDEE412185B1; - ReadData2E = 64'h3F9FFFFFF8000FFE; - ReadData3E = 64'hC01000004FFFFFFE; - ans = 64'hC01000004FFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"929933\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'hBFFFFFFFFF0003FF; - ans = 64'hBFEFFFFFFE0007FD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"930239\n"); - end - ReadData1E = 64'hB81F0000000007FF; - ReadData2E = 64'h4021FFFFFFFFFFDF; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h3CA0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"930545\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'h7FF0000000000001; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"930851\n"); - end - ReadData1E = 64'h0020000040200000; - ReadData2E = 64'hB808F7D662C77EE8; - ReadData3E = 64'h7FDC9A96BB0DE738; - ans = 64'h7FDC9A96BB0DE738; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"931157\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h41D0000001FFFF80; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h41B0000002FFFF81; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"931463\n"); - end - ReadData1E = 64'h244FFE0000000007; - ReadData2E = 64'h4010000000000000; - ReadData3E = 64'h4010000000FFFFFE; - ans = 64'h4010000000FFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"931769\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h7FD000000000401F; - ReadData3E = 64'h43C6B4670C817DE7; - ans = 64'h7FB0000000004020; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"932075\n"); - end - ReadData1E = 64'hC490000000090000; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'hC4AFFFFF80120002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"932381\n"); - end - ReadData1E = 64'hBCA000000000077F; - ReadData2E = 64'h3FD000000000003F; - ReadData3E = 64'h37F4A35F530E6918; - ans = 64'hBC800000000007BE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"932687\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'hBFF30581BE620614; - ans = 64'h3FE9F4FC833BF3DA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"932993\n"); - end - ReadData1E = 64'h3FB0000400003FFE; - ReadData2E = 64'h41E000000007FFFC; - ReadData3E = 64'h8010000000000001; - ans = 64'h41A0000400083FFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"933299\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"933605\n"); - end - ReadData1E = 64'h3FC54E5D41712B9E; - ReadData2E = 64'h47E000010007FFFF; - ReadData3E = 64'h33C0002007FFFFFF; - ans = 64'h47B54E5E9661A6E2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"933911\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBFE00001FFF7FFFF; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hBFF200003FFF0000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"934217\n"); - end - ReadData1E = 64'hBF1FFC0100000000; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'hB7E41A93A1F3F585; - ans = 64'hC26FFC0100000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"934523\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC7F0007FFFFFFEFF; - ReadData3E = 64'hB77FFFFFFFF8003F; - ans = 64'hC7D0007FFFFFFF00; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"934829\n"); - end - ReadData1E = 64'hBF5FEFFBFFFFFFFE; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'hC340000000000000; - ans = 64'hC34007FBFF000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"935135\n"); - end - ReadData1E = 64'hC14400000003FFFE; - ReadData2E = 64'h402FFFFFE007FFFE; - ReadData3E = 64'h40070F2EB2AE69A8; - ans = 64'hC183FFFFD4F9D14A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"935441\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'hBF30000001FFF7FF; - ans = 64'h4320000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"935747\n"); - end - ReadData1E = 64'h7FE3BD3ADDB19B8A; - ReadData2E = 64'h41E856C1AFCD15DF; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"936053\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'h4353FFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"936359\n"); - end - ReadData1E = 64'h8000000004004000; - ReadData2E = 64'hC7FFEFFFFFDFFFFE; - ReadData3E = 64'hBFDFFFE000100000; - ans = 64'hBFDFFFE000100000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"936665\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hF4E2706CF518E262; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'hF4C2706CF518E263; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"936971\n"); - end - ReadData1E = 64'h82D59DA4597BE47B; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'hC0000000008007FF; - ans = 64'hC0000000008007FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"937277\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBF40000000003F7E; - ReadData3E = 64'h036000000000017F; - ans = 64'hBF20000000003F7F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"937583\n"); - end - ReadData1E = 64'hBDDBFFFFFEFFFFFF; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'h4010000000000001; - ans = 64'hFDCBFFFFFEFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"937889\n"); - end - ReadData1E = 64'hB7FFFFFFFFFF7FF8; - ReadData2E = 64'h41E9D8AF3D98FD59; - ReadData3E = 64'h3FCCA1065CC75F03; - ans = 64'h3FCCA1065CC75F03; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"938195\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'h400003FBFFFFFFFF; - ans = 64'h7FC0000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"938501\n"); - end - ReadData1E = 64'h23B930F468025F01; - ReadData2E = 64'hBFF0AC6DEFA519FB; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"938807\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'hC340000000000000; - ans = 64'h7FC0000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"939113\n"); - end - ReadData1E = 64'h401A984CEE2CCFDF; - ReadData2E = 64'h2E8FFFDFFFFFFFBF; - ReadData3E = 64'hBFBFFFBFFFFFEFFF; - ans = 64'hBFBFFFBFFFFFEFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"939419\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC3492C4DB0C5D4CF; - ReadData3E = 64'hBFD0000000000000; - ans = 64'hC3292C4DB0C5D4D1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"939725\n"); - end - ReadData1E = 64'h41EAAC2889278322; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'hBFD20001FFFFFFFE; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"940031\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC032A56D96C76E30; - ReadData3E = 64'hB81000000002FFFF; - ans = 64'hC012A56D96C76E31; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"940337\n"); - end - ReadData1E = 64'h3FE0003FFFFFFFBF; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'h7FE0003FFFFFFFBE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"940643\n"); - end - ReadData1E = 64'h936FFFC000000006; - ReadData2E = 64'h43FF81FFFFFFFFFF; - ReadData3E = 64'hC3CFFFFFFFFC001E; - ans = 64'hC3CFFFFFFFFC001E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"940949\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'h42DC090B99823732; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"941255\n"); - end - ReadData1E = 64'h3EE0000FFFFFFDFF; - ReadData2E = 64'h3800004000002000; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"941561\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'h4010000000000001; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"941867\n"); - end - ReadData1E = 64'hB7F0000000FFFFF8; - ReadData2E = 64'h47FFFEFFFFFFFFFD; - ReadData3E = 64'h43D003FDFFFFFFFE; - ans = 64'h43D003FDFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"942173\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h41D24652A1E9AC61; - ReadData3E = 64'h3CA0000000000001; - ans = 64'h41B24652A1E9AC62; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"942479\n"); - end - ReadData1E = 64'h3C9003FFF8000000; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'h3F2FFFFF000FFFFE; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"942785\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h3FB3971FA94CB21A; - ReadData3E = 64'h407FFFFFFFFDFFFF; - ans = 64'h408000272E3E5299; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"943091\n"); - end - ReadData1E = 64'h37E800000000001F; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'h3FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"943397\n"); - end - ReadData1E = 64'hC1E00001E0000000; - ReadData2E = 64'h47EFFEFFFFC00000; - ReadData3E = 64'hBFC0000001BFFFFF; - ans = 64'hC9DFFF03BFA1FFF9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"943703\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'h37F5CAD1D5067C14; - ans = 64'h37F5CAD1D5067C14; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"944009\n"); - end - ReadData1E = 64'hB7E000000FFFFFFE; - ReadData2E = 64'hB3AFFEFFFDFFFFFF; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"944315\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hC00FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"944621\n"); - end - ReadData1E = 64'h801FFF7FFFFFF7FF; - ReadData2E = 64'hB52FFFFE00000002; - ReadData3E = 64'h38700007FFFFFFEF; - ans = 64'h38700007FFFFFFEF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"944927\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h381FFFFFF7FFFF00; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'h37FFFFFFF7FFFF02; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"945233\n"); - end - ReadData1E = 64'hC0000004003FFFFE; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'h41DFFFEFFFDFFFFF; - ans = 64'h41DFFFEFFFDFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"945539\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC3CFFFFFF0200000; - ReadData3E = 64'h3FF000200000FFFE; - ans = 64'hC3AFFFFFF0200002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"945845\n"); - end - ReadData1E = 64'hC00C000000100000; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"946151\n"); - end - ReadData1E = 64'h5DA0000203FFFFFE; - ReadData2E = 64'h3F5FBFFFFFC00000; - ReadData3E = 64'h3BEFFFFC00000FFF; - ans = 64'h5D0FC003FFAFFFF4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"946457\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'h43E0000FFF000000; - ans = 64'h43E0000FFF000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"946763\n"); - end - ReadData1E = 64'h37F54C04C2DD9BA8; - ReadData2E = 64'hBFB0017FFFFFFFFF; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"947069\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'h3FFFFFFFFFFFFFFE; - ans = 64'h3FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"947375\n"); - end - ReadData1E = 64'hACDFFF7FFFFFFBFE; - ReadData2E = 64'h3FD0000FFFBFFFFE; - ReadData3E = 64'hC01FFFFFFF7FFFDF; - ans = 64'hC01FFFFFFF7FFFDF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"947681\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC1D00000DFFFFFFE; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'hC1B00000DFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"947987\n"); - end - ReadData1E = 64'h47E000040000000F; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'hBF50000007FFFBFF; - ans = 64'hBF50000007FFFBFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"948293\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC80FFFF7FF7FFFFE; - ReadData3E = 64'h802FFF8000800000; - ans = 64'hC7EFFFF7FF800000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"948599\n"); - end - ReadData1E = 64'hB9C01FFFFFFFF800; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'h3FE0000000000001; - ans = 64'h3FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"948905\n"); - end - ReadData1E = 64'hBFC0001007FFFFFE; - ReadData2E = 64'hBFD10000000001FF; - ReadData3E = 64'h99700000013FFFFF; - ans = 64'h3FA10011088001FD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"949211\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'hC3D0000000013FFF; - ans = 64'hC3D0000000013FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"949517\n"); - end - ReadData1E = 64'hC38C638EECC31ABD; - ReadData2E = 64'hC1E0003FFE000000; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'h457C640077725BEC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"949823\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hBFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"950129\n"); - end - ReadData1E = 64'h4024C8265CB4F296; - ReadData2E = 64'hC033F2685AF47617; - ReadData3E = 64'h3FF17E93439BFDF1; - ans = 64'hC069C58B36E690F8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"950435\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBCA001000001FFFF; - ReadData3E = 64'h8000000000000000; - ans = 64'hBC80010000020000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"950741\n"); - end - ReadData1E = 64'h401FFFFFE0000080; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'hC13FFFEFFF800000; - ans = 64'hC13FFFEFFF800000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"951047\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h407FFFFFFFFFFFFF; - ReadData3E = 64'hB7FFFFFFFFFBFF7F; - ans = 64'h4060000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"951353\n"); - end - ReadData1E = 64'h3FC0000000000BFE; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hBFDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"951659\n"); - end - ReadData1E = 64'h20E0000000780000; - ReadData2E = 64'h3880801FFFFFFFFF; - ReadData3E = 64'h4020000008080000; - ans = 64'h4020000008080000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"951965\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'h381000000001001E; - ans = 64'hBC90000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"952271\n"); - end - ReadData1E = 64'hCBFFFFFFE1FFFFFE; - ReadData2E = 64'hAA2FFEFFFFFFEFFE; - ReadData3E = 64'hC010000000000000; - ans = 64'hC010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"952577\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'h3FE0000000000001; - ans = 64'h3FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"952883\n"); - end - ReadData1E = 64'h8023F3F2A8389E11; - ReadData2E = 64'h066175AB575ABFB2; - ReadData3E = 64'h3FDFFFFFFFFC01FF; - ans = 64'h3FDFFFFFFFFC01FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"953189\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h44468C671497C5ED; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"953495\n"); - end - ReadData1E = 64'h3FC4793378DC78BE; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'hC7FFF08000000000; - ans = 64'hC7FFF08000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"953801\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h3FE1638DA0EC77C4; - ReadData3E = 64'hC1D0000100100000; - ans = 64'hC1D0000100074E39; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"954107\n"); - end - ReadData1E = 64'hBB8FBFFEFFFFFFFF; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h3CB00000FDFFF7FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"954413\n"); - end - ReadData1E = 64'hBFE78F372393823A; - ReadData2E = 64'h40284FEE9BB805EE; - ReadData3E = 64'h3801623519F16C3D; - ans = 64'hC021E642969DBD5D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"954719\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'h7FFEF9A73225A948; - ans = 64'h7FFEF9A73225A948; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"955025\n"); - end - ReadData1E = 64'h3FCFF70000000000; - ReadData2E = 64'hFFE1112C9531B024; - ReadData3E = 64'h4000000000000001; - ans = 64'hFFC10C5FC0A7BA2A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"955331\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hBFE4000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"955637\n"); - end - ReadData1E = 64'h9B800000200003FF; - ReadData2E = 64'hBFE014D6B151044F; - ReadData3E = 64'h3734B9CE039E32CB; - ans = 64'h3734B9CE039E32CB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"955943\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC7EDFFFF7FFFFFFF; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"956249\n"); - end - ReadData1E = 64'h3E401FFDFFFFFFFE; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'hBF8F80000000FFFF; - ans = 64'hBF8F80008100EFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"956555\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC1DFFEFFFFF7FFFF; - ReadData3E = 64'hDB300000000FFFBF; - ans = 64'hDB300000000FFFBF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"956861\n"); - end - ReadData1E = 64'h47FE49AB039DFC52; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'hBCA0000000000000; - ans = 64'hC7EE49AB039DFC52; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"957167\n"); - end - ReadData1E = 64'hC560FFFFFFFFFFBE; - ReadData2E = 64'hBFFFFFFFFFFFFFE2; - ReadData3E = 64'hC7FFBED86249373C; - ans = 64'hC7FFBED86249263C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"957473\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'hBFFD2C90EF0F0A69; - ans = 64'hBFFF2C90EF0F0A69; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"957779\n"); - end - ReadData1E = 64'h489CCE60FE90D5B4; - ReadData2E = 64'hC1FDCD10BFBA3993; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'hCAAAD3A117DA0724; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"958085\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'hBFCFFFFFFFFFFFF9; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"958391\n"); - end - ReadData1E = 64'hB7F0008000000000; - ReadData2E = 64'hC01FFEFFDFFFFFFF; - ReadData3E = 64'h7FEFF8000000FFFE; - ans = 64'h7FEFF8000000FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"958697\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC03BC4DBCEA3AFEF; - ReadData3E = 64'hC34FFFFFFFFFFFFE; - ans = 64'hC350000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"959003\n"); - end - ReadData1E = 64'h401FFDFFFFF00000; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'hC3400D15CAF2C5CA; - ans = 64'hC3400D15CAF2C5CE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"959309\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBFCFFFFE00007FFF; - ReadData3E = 64'hC1F0000003FFBFFF; - ans = 64'hC1F000000400BFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"959615\n"); - end - ReadData1E = 64'hC100002000000000; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'h0010000000000001; - ans = 64'h4100002000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"959921\n"); - end - ReadData1E = 64'hFFD800000007FFFE; - ReadData2E = 64'h3FD08000007FFFFE; - ReadData3E = 64'hB7F3784914F45A14; - ans = 64'hFFB8C00000C83FFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"960227\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'h002FFFBFFFFFFC00; - ans = 64'hBFD0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"960533\n"); - end - ReadData1E = 64'h3FDFDFFFFFFFFFFD; - ReadData2E = 64'h8017FFFFEFFFFFFF; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'h3FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"960839\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'hBCA0000000000000; - ans = 64'hBFD0000000000004; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"961145\n"); - end - ReadData1E = 64'h3960743905826A36; - ReadData2E = 64'hC02000001FFFFFEF; - ReadData3E = 64'hC0365E1AE8AC5C5E; - ans = 64'hC0365E1AE8AC5C5E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"961451\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC1CFFFFFFBFFFFBF; - ReadData3E = 64'h4340000000000000; - ans = 64'h433FFFFFF0000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"961757\n"); - end - ReadData1E = 64'h001B890A98279E8B; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'h408F000000020000; - ans = 64'h408F000000020000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"962063\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hFFEFFFFFFFFFDFEE; - ReadData3E = 64'h3CF000000007FFF7; - ans = 64'hFFCFFFFFFFFFDFF0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"962369\n"); - end - ReadData1E = 64'hBFCB62E6ED21BD63; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'h3FDB62E6ED21BD61; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"962675\n"); - end - ReadData1E = 64'hC1E000000027FFFE; - ReadData2E = 64'h3FAFFFFEFFFFFF80; - ReadData3E = 64'hC02FFFFFFE007FFF; - ans = 64'hC19FFFFF404FFF76; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"962981\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'h4F40000400080000; - ans = 64'h4F40000400080000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"963287\n"); - end - ReadData1E = 64'h381FFFFFEDFFFFFF; - ReadData2E = 64'hFFFFFFFE0000007F; - ReadData3E = 64'hBFE0000000000000; - ans = 64'hFFFFFFFE0000007F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"963593\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'h0010000000000001; - ans = 64'hBFE0000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"963899\n"); - end - ReadData1E = 64'hBCA001FFFFDFFFFF; - ReadData2E = 64'h3FE2F2314E94F75E; - ReadData3E = 64'hBAEFFE0000000200; - ans = 64'hBC92F48F9898A599; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"964205\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h00171492F6962A8C; - ReadData3E = 64'hC010000000000001; - ans = 64'hC010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"964511\n"); - end - ReadData1E = 64'h800A1EC2F81DC219; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'h37E6F1B7F6356355; - ans = 64'h37E6F1B7F6356355; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"964817\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h40A0000000800000; - ReadData3E = 64'hBFFDF4CAB0144EF1; - ans = 64'h407FE20B364FEBB3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"965123\n"); - end - ReadData1E = 64'h7FF3BE7F51FBB158; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'hFFFFFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"965429\n"); - end - ReadData1E = 64'h37F0000000014000; - ReadData2E = 64'h89066053EC882A36; - ReadData3E = 64'hC1B000000011FFFF; - ans = 64'hC1B000000011FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"965735\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'hC1CFFFFFFFFF8007; - ans = 64'hC1D00000003FC003; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"966041\n"); - end - ReadData1E = 64'hC2CFFFFFFFFFDFC0; - ReadData2E = 64'hC3F01FFFFFFFFFF6; - ReadData3E = 64'h3FD0000000000001; - ans = 64'h46D01FFFFFFFEFB6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"966347\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'hBFF0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"966653\n"); - end - ReadData1E = 64'h4E3FFC01FFFFFFFF; - ReadData2E = 64'h62E1FFFEFFFFFFFE; - ReadData3E = 64'h3FDFFFFFFC00007F; - ans = 64'h7131FDC0201FEFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"966959\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBFDFFF8000000080; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'h400F0003FFFFFFFB; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"967265\n"); - end - ReadData1E = 64'hC13000001DFFFFFF; - ReadData2E = 64'hC010000000000001; - ReadData3E = 64'hC000001FFFFFFFF0; - ans = 64'h414FFFFF3BFE0000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"967571\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h3253FDFFFFFFFFFF; - ReadData3E = 64'hBCA1FFFFFFFFE000; - ans = 64'hBCA1FFFFFFFFE000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"967877\n"); - end - ReadData1E = 64'h7FD00400000001FF; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"968183\n"); - end - ReadData1E = 64'h5C2AC90B8977039C; - ReadData2E = 64'hBCA0000FFFFFFDFF; - ReadData3E = 64'hC0CFFFFFFFFE7FFF; - ans = 64'hD8DAC926528289B8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"968489\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'hFFDFFFC001FFFFFF; - ans = 64'hFFDFFFC001FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"968795\n"); - end - ReadData1E = 64'h47E1FEFFFFFFFFFE; - ReadData2E = 64'hBFF0041000000000; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'hC7E20391BEFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"969101\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'hFFFFFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"969407\n"); - end - ReadData1E = 64'hFFF0000400000000; - ReadData2E = 64'h78400000000FFDFF; - ReadData3E = 64'hC1F36615D549A0E5; - ans = 64'hFFF8000400000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"969713\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC006A045CF961FE9; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hC005A81173E587FA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"970019\n"); - end - ReadData1E = 64'hC1E20FFFFFFFFFFF; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'h3FC03FFFFFF80000; - ans = 64'h4532100000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"970325\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC1FFDFFF7FFFFFFE; - ReadData3E = 64'hBFDDFFFFEFFFFFFF; - ans = 64'hC1DFDFFF801E0000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"970631\n"); - end - ReadData1E = 64'hC80A1EC7C632AD61; - ReadData2E = 64'hC340000000000001; + ReadData2E = 64'h001FE00000010000; ReadData3E = 64'hFFE0000000000001; ans = 64'hFFE0000000000001; FrmE = 3'b000; @@ -123805,12 +36132,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"970937\n"); + $fwrite(fp,"925924\n"); end - ReadData1E = 64'hEEEDFBFFFFFFFFFE; - ReadData2E = 64'hC3F07FFFBFFFFFFE; - ReadData3E = 64'h3FFA5202B857DE26; - ans = 64'h72EEEBDF880FFFFA; + ReadData1E = 64'hB80FFFE0FFFFFFFE; + ReadData2E = 64'h3FB1BFFFFFFFFFFF; + ReadData3E = 64'hFFD99B913AF6E9DD; + ans = 64'hFFD99B913AF6E9DD; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -123844,12 +36171,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"971243\n"); + $fwrite(fp,"926925\n"); end ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'hC00FFFFFF8000003; - ans = 64'hC330000000000004; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -123883,12 +36210,363 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"971549\n"); + $fwrite(fp,"927926\n"); end - ReadData1E = 64'h41F63343608D9BC4; - ReadData2E = 64'h51FBCA96E92C466E; + ReadData1E = 64'h0023FFFFFFF7FFFF; + ReadData2E = 64'h45BFFFF7FFFFFFE0; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"928927\n"); + end + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h5720000001FFFFBF; + ans = 64'h5720000001FFFFBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"929928\n"); + end + ReadData1E = 64'h40300403FFFFFFFF; + ReadData2E = 64'hC80FFFDFFFFFFDFF; + ReadData3E = 64'h3C0268AEB0CEB1E3; + ans = 64'hC85003F3FBFBFEFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"930929\n"); + end + ReadData1E = 64'hD44FFFFC7FFFFFFF; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'hD47FFFFC7FFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"931930\n"); + end + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'h3FA43DEE62918C10; + ReadData3E = 64'hC0CFFBFEFFFFFFFF; + ans = 64'hC0CFFBFDBC2119D6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"932931\n"); + end + ReadData1E = 64'hBCA86E05CD5CFC12; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'hBFDFFFFFFFF01000; + ans = 64'hC00C6E05CD5AFE11; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"933932\n"); + end + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'hB7F00000FFFFFBFF; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"934933\n"); + end + ReadData1E = 64'hC70C4CE9F0A53683; + ReadData2E = 64'h4C60635DF06937DE; + ReadData3E = 64'hC20FFFFFDFFFFFFD; + ans = 64'hD37CFCAC0071CC2F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"935934\n"); + end + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h7FC0000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"936935\n"); + end + ReadData1E = 64'h8004BFD048923951; + ReadData2E = 64'hC03FFFF807FFFFFE; ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'h540347CD24D8C7DD; + ans = 64'h0046FF3C67386CF9; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -123922,11 +36600,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"971855\n"); + $fwrite(fp,"937936\n"); end ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'h7FF0000000000000; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'hC3D0001000007FFF; ans = 64'h7FF0000000000000; FrmE = 3'b000; #10 @@ -123961,12 +36639,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"972161\n"); + $fwrite(fp,"938937\n"); end - ReadData1E = 64'h9AECFD35BA2EEEA1; - ReadData2E = 64'h45E0000080003FFF; - ReadData3E = 64'hBFEFFFFFFFBFF7FF; - ans = 64'hBFEFFFFFFFBFF7FF; + ReadData1E = 64'h400FFFFFFFDFBFFF; + ReadData2E = 64'h40AFFFFFFFAFFFFF; + ReadData3E = 64'hB81FF7FFEFFFFFFF; + ans = 64'h40CFFFFFFF8FBFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124000,12 +36678,363 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"972467\n"); + $fwrite(fp,"939938\n"); + end + ReadData1E = 64'hC1F078BDF7735C30; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"940939\n"); end ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h594FF80000000010; + ReadData2E = 64'h41EFFFFFFFFFFFF9; + ReadData3E = 64'h41FFE000000003FE; + ans = 64'h4201F000000001FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"941940\n"); + end + ReadData1E = 64'h400FF7FFFFFFFFF0; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h402FE00000000008; + ans = 64'h402FE00000000008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"942941\n"); + end + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'h49BD36D17EB585B2; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h499D36D17EB585B4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"943942\n"); + end + ReadData1E = 64'hF4A000080003FFFF; + ReadData2E = 64'h4000000000004003; + ReadData3E = 64'hCE000000FFFFFF7E; + ans = 64'hF4B0000800044002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"944943\n"); + end + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"945944\n"); + end + ReadData1E = 64'hBFDFFF0000000FFF; + ReadData2E = 64'h3FCFFF7FF7FFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"946945\n"); + end + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'h39D000000100003E; + ans = 64'h39D000000100003E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"947946\n"); + end + ReadData1E = 64'hBFF000000003FF80; + ReadData2E = 64'hC010000000037FFF; + ReadData3E = 64'h37EFFFC000004000; + ans = 64'h4010000000077F7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"948947\n"); + end + ReadData1E = 64'hBF3FF7FFDFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; ReadData3E = 64'h3FF0000000000000; - ans = 64'h592FF80000000012; + ans = 64'h3FF0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124039,51 +37068,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"972773\n"); - end - ReadData1E = 64'h0000008FFFFFFFFE; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'hC055969B9E03C347; - ans = 64'hC05596A01E03C347; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"973079\n"); + $fwrite(fp,"949948\n"); end ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h43DFE000000003FF; - ReadData3E = 64'h47EFFFFEFFF80000; - ans = 64'h47EFFFFEFFF80000; + ReadData2E = 64'hC99FF00000000800; + ReadData3E = 64'h89EC02A80BD3769A; + ans = 64'hC97FF00000000802; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124117,12 +37107,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"973385\n"); + $fwrite(fp,"950949\n"); end - ReadData1E = 64'h287FEFFEFFFFFFFF; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'hE86FEFFF00000001; + ReadData1E = 64'hC1F00007FFBFFFFE; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'hBDB0000001FFEFFE; + ans = 64'h41D00007FFBFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124156,51 +37146,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"973691\n"); - end - ReadData1E = 64'hC3E800000000003F; - ReadData2E = 64'h802E7EFB0F9DFB33; - ReadData3E = 64'hC01FFFFFFFFFFFE7; - ans = 64'hC01FFFFFFFFFFFE7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"973997\n"); + $fwrite(fp,"951950\n"); end ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'hEC7FFFBFFBFFFFFF; - ans = 64'hFFD0000000000000; + ReadData2E = 64'hC02FFFFF80010000; + ReadData3E = 64'h0000000000000001; + ans = 64'hC00FFFFF80010002; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124234,12 +37185,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"974303\n"); + $fwrite(fp,"952951\n"); end - ReadData1E = 64'h3CE000003FFEFFFF; - ReadData2E = 64'hC130040003FFFFFE; - ReadData3E = 64'h8010000000000000; - ans = 64'hBE200400440EFFCD; + ReadData1E = 64'hC3E007FFFFFFFFFE; + ReadData2E = 64'h4222000000002000; + ReadData3E = 64'hB80FFFFFFFD00000; + ans = 64'hC61209000000200E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124273,12 +37224,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"974609\n"); + $fwrite(fp,"953952\n"); end ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'hFFE0000000000001; - ans = 64'hFFE8000000000001; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hBFC0000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124312,12 +37263,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"974915\n"); + $fwrite(fp,"954953\n"); end - ReadData1E = 64'hC00DFFBFFFFFFFFF; - ReadData2E = 64'hC075E9323CB1786B; - ReadData3E = 64'hC008AD1C6219D7C3; - ans = 64'h40947E1CB850DA95; + ReadData1E = 64'h9EB0F4794CE2D9EF; + ReadData2E = 64'h63C00000100000FF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC280F4795DD7744A; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124351,12 +37302,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"975221\n"); + $fwrite(fp,"955954\n"); end ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBF6FF8000000007F; - ReadData3E = 64'hBFE0000000000001; - ans = 64'hBFE007FE00000001; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'hC25BAF6DEF851106; + ans = 64'hC25BAF6DEF852106; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124390,11 +37341,401 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"975527\n"); + $fwrite(fp,"956955\n"); end - ReadData1E = 64'h69CC4C2584E45E21; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'h26CA7C0E0EDC5D70; + ReadData1E = 64'h41FFFFFBFFFFFEFE; + ReadData2E = 64'h434FFF0000000020; + ReadData3E = 64'hC3DFFE0000FFFFFE; + ans = 64'h455FFEFBE021FF1D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"957956\n"); + end + ReadData1E = 64'hBE30003FF7FFFFFE; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h3E30003FEFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"958957\n"); + end + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'hC007FFFFFFF00000; + ReadData3E = 64'hCF100000F0000000; + ans = 64'hCF100000F0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"959958\n"); + end + ReadData1E = 64'hC800007FFFFFFEFE; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'hDE5FFFFFFFFDFFFF; + ans = 64'hDE5FFFFFFFFDFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"960959\n"); + end + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'hC332B00550632C5F; + ReadData3E = 64'h4340000000000001; + ans = 64'h433B53FEABE734EA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"961960\n"); + end + ReadData1E = 64'h37E3AA15C16B43E2; + ReadData2E = 64'h402000007FFFFF7F; + ReadData3E = 64'h3FB00107FFFFFFFF; + ans = 64'h3FB00107FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"962961\n"); + end + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"963962\n"); + end + ReadData1E = 64'h43D020000000007E; + ReadData2E = 64'hC55FFFFFE3FFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC9401FFFF1E4007D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"964963\n"); + end + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hC3F0008000000000; + ans = 64'hC3F0008000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"965964\n"); + end + ReadData1E = 64'hC85FFFFEFFFFFFF7; + ReadData2E = 64'hBFCFFFFFBFFF8000; + ReadData3E = 64'hB20F000020000000; + ans = 64'h483FFFFEBFFF81F7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"966965\n"); + end + ReadData1E = 64'hBCAFF0000FFFFFFE; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'hFFF0000000000000; ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 @@ -124429,12 +37770,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"975833\n"); + $fwrite(fp,"967966\n"); end ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'h3FE8720FB6B51807; - ReadData3E = 64'hBFC000007EFFFFFF; - ans = 64'h3FB0E41E6F6A3013; + ReadData2E = 64'hFFDFFFFFFFFDEFFE; + ReadData3E = 64'h405FFFFF7FFFFE00; + ans = 64'hFFBFFFFFFFFDF000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124468,12 +37809,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"976139\n"); + $fwrite(fp,"968967\n"); end - ReadData1E = 64'hC3F37CDA8E6B566C; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'h7FF0000000000000; + ReadData1E = 64'hBFCCC1AB134536F4; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h416FFFF03FFFFFFE; + ans = 64'h432CC1AB154535F6; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124507,12 +37848,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"976445\n"); + $fwrite(fp,"969968\n"); end - ReadData1E = 64'hFFD21FFFFFFFFFFE; - ReadData2E = 64'hB810000001FEFFFE; - ReadData3E = 64'hC80FFFFFFFA00000; - ans = 64'h77F220000242DDFC; + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'h8973FFFFFFFFFFBE; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124546,11 +37887,128 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"976751\n"); + $fwrite(fp,"970969\n"); + end + ReadData1E = 64'h00100002003FFFFF; + ReadData2E = 64'h2F2FFDFFFFDFFFFF; + ReadData3E = 64'hCD9000010000000F; + ans = 64'hCD9000010000000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"971970\n"); + end + ReadData1E = 64'h3FD0000000000001; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hFFD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"972971\n"); + end + ReadData1E = 64'h3FC0000800007FFF; + ReadData2E = 64'h41F04AF275A68933; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h41C04AFA9B20465D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"973972\n"); end ReadData1E = 64'h3FD0000000000001; ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'hC34000000003F000; + ReadData3E = 64'h0000000010001000; ans = 64'hFFF8000000000001; FrmE = 3'b000; #10 @@ -124585,12 +38043,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"977057\n"); + $fwrite(fp,"974973\n"); end - ReadData1E = 64'h381FFFF7FF7FFFFF; - ReadData2E = 64'hE60A593DE76F061F; - ReadData3E = 64'h0000000000000001; - ans = 64'hDE3A593750B6274B; + ReadData1E = 64'hDF6020007FFFFFFF; + ReadData2E = 64'hC52000040FFFFFFF; + ReadData3E = 64'h41DFFFFFFFF80040; + ans = 64'h649020049820207E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124624,202 +38082,7 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"977363\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"977669\n"); - end - ReadData1E = 64'hBFE5C55F9D983738; - ReadData2E = 64'hBFE0003FFFFDFFFE; - ReadData3E = 64'h3D4D4C7C8BA68069; - ans = 64'h3FD5C5B6B3140390; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"977975\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hC3EFFFFFFFFFB7FF; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'hC3CFFFFFFFFFB801; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"978281\n"); - end - ReadData1E = 64'h4023A84702311282; - ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'h4018B473E74D3CF2; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"978587\n"); - end - ReadData1E = 64'h3FD0000000000001; - ReadData2E = 64'hBF3000010000007E; - ReadData3E = 64'hBFFFFFFFFFFFF802; - ans = 64'hC00000200001FC01; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"978893\n"); + $fwrite(fp,"975974\n"); end ReadData1E = 64'hFFEFFFFFFEFDFFFF; ReadData2E = 64'h0000000000000000; @@ -124858,51 +38121,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"979199\n"); - end - ReadData1E = 64'h3C300000FFFFF7FF; - ReadData2E = 64'hC2BFFF0000000004; - ReadData3E = 64'hBFCBFB075CA1326A; - ans = 64'hBFCBFC0754B131EA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"979505\n"); + $fwrite(fp,"976975\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'h41AFFFFFFC0001FE; - ans = 64'h41AFFFFFFC0001FE; + ReadData2E = 64'hBD0FFFF00FFFFFFF; + ReadData3E = 64'hC01C000100000000; + ans = 64'hC01C000100000008; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124936,12 +38160,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"979811\n"); + $fwrite(fp,"977976\n"); end - ReadData1E = 64'h40FFFFFFFFFFF03E; - ReadData2E = 64'hBCAFFFFFF5FFFFFF; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; + ReadData1E = 64'hCD412AD98CD1A9E9; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h37FFFF7FFEFFFFFE; + ans = 64'h37FFFF7FFEFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -124975,12 +38199,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"980117\n"); + $fwrite(fp,"978977\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hC0DF7FFFFF000000; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hC0CF7FFFFEFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -125014,12 +38238,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"980423\n"); + $fwrite(fp,"979978\n"); end - ReadData1E = 64'h401FFFBFFFFFFF7F; - ReadData2E = 64'hC00C00000000007E; - ReadData3E = 64'hBEBFFFFF0000FFFE; - ans = 64'hC03BFFC81FFFFF0D; + ReadData1E = 64'hC00000001FF80000; + ReadData2E = 64'h3FDC92D865B81A59; + ReadData3E = 64'hF2EFFFFFFFF04000; + ans = 64'hF2EFFFFFFFF04000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -125053,402 +38277,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"980729\n"); + $fwrite(fp,"980979\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBF8BFFFF80000000; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'hBF7BFFFF800000FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"981035\n"); - end - ReadData1E = 64'h3D10000000004004; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'h3CA8781265FFCFE7; - ans = 64'h3CA8781265FFCFE7; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"981341\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h3FD6B45300124B28; - ReadData3E = 64'h47E7FFFFF7FFFFFE; - ans = 64'h47E7FFFFF7FFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"981647\n"); - end - ReadData1E = 64'hB7EFFFEFFDFFFFFE; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'hC000000000000001; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"981953\n"); - end - ReadData1E = 64'hFFFFFFFFFFC3FFFF; - ReadData2E = 64'h3F900000A0000000; - ReadData3E = 64'h41E000000083FFFF; - ans = 64'hFFFFFFFFFFC3FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"982259\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h0010000000000000; - ReadData3E = 64'h3F8F001000000000; - ans = 64'h3F8F001000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"982565\n"); - end - ReadData1E = 64'h8020000000001FFC; - ReadData2E = 64'hBC0FFFF9FFFFFFFE; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"982871\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'h4010000000000000; - ans = 64'h4010000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"983177\n"); - end - ReadData1E = 64'hC34626B788D750F2; - ReadData2E = 64'h381FFFBFFFFFFDFE; - ReadData3E = 64'h3FB00080001FFFFF; - ans = 64'h3FB00080001FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"983483\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC01F780000000000; - ReadData3E = 64'h3CA0000000000000; - ans = 64'hC00F77FFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"983789\n"); - end - ReadData1E = 64'h121FFFFFFC000002; ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'h40300003FFFF7FFF; - ans = 64'h40300003FFFF7FFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -125482,324 +38316,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"984095\n"); + $fwrite(fp,"981980\n"); + end + ReadData1E = 64'hC0003FFFDFFFFFFF; + ReadData2E = 64'hB81FFFFFFE000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"982981\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h3F400000001FFFDE; - ReadData3E = 64'h8029A783715CE4CD; - ans = 64'h3F300000001FFFDD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"984401\n"); - end - ReadData1E = 64'hFFE000040003FFFF; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'hC00000080007FFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"984707\n"); - end - ReadData1E = 64'h380FFFFC007FFFFE; - ReadData2E = 64'h6A9FFFC000000003; - ReadData3E = 64'h8012C39F78579516; - ans = 64'h62BFFFBC0087FF01; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"985013\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'hBCAFDFFFFFFFFFEE; - ans = 64'hBCA7DFFFFFFFFFEE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"985319\n"); - end - ReadData1E = 64'h41AFFFFF8001FFFE; - ReadData2E = 64'h2C6BBA796AEC3BE5; - ReadData3E = 64'h7FE0000000000000; - ans = 64'h7FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"985625\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'hC000000000000001; - ans = 64'hC000000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"985931\n"); - end - ReadData1E = 64'hFFD8BB98BFC10007; - ReadData2E = 64'h41EFFFFEFFFFF800; - ReadData3E = 64'h37E00000000FFFF8; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"986237\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h3ECFFFFFBFFFE000; - ReadData3E = 64'h8010000000000001; - ans = 64'h3EBFFFFFBFFFDFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"986543\n"); - end - ReadData1E = 64'h47E0040FFFFFFFFF; ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'hB04007FFFFFFFF7F; - ans = 64'h4490041000000000; + ReadData3E = 64'hD870001FE0000000; + ans = 64'hD870001FE0000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -125833,12 +38394,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"986849\n"); + $fwrite(fp,"983982\n"); end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h21000001003FFFFE; - ReadData3E = 64'h3CA5394998BC9A57; - ans = 64'h3CA5394998BC9A57; + ReadData1E = 64'hBF4FDBFFFFFFFFFF; + ReadData2E = 64'hFFD7FFFFFFFF7FFE; + ReadData3E = 64'h43F0000000200002; + ans = 64'h7F37E4FFFFFF808D; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -125872,3756 +38433,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"987155\n"); + $fwrite(fp,"984983\n"); end - ReadData1E = 64'h31BFFFFFFFC0003F; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hBFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"987461\n"); - end - ReadData1E = 64'h44A367D1A38248BF; - ReadData2E = 64'hDD3DC9E8AED9E5B2; - ReadData3E = 64'hBD000FFFFFFFFEFF; - ans = 64'hE1F2108733B1A4F0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"987767\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData1E = 64'hBFD0200000003FFF; ReadData2E = 64'h3CAFFFFFFFFFFFFE; - ReadData3E = 64'hC1F000000080003E; - ans = 64'hC1F000000080003E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"988073\n"); - end - ReadData1E = 64'h9C09F2FB6E1B6AC0; - ReadData2E = 64'hA7D718808707F875; - ReadData3E = 64'hC340000000000001; - ans = 64'hC340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"988379\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h4000FFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"988685\n"); - end - ReadData1E = 64'hB80FFFFFC007FFFF; - ReadData2E = 64'hFDFFFFFFE7FFFFFF; - ReadData3E = 64'hC1EFFFF7FFEFFFFF; - ans = 64'h761FFFFFA808002E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"988991\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h40100000000FFFFE; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h40000000000FFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"989297\n"); - end - ReadData1E = 64'hC0F0E9718D9CDCE9; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'hC01FFFFFFFFFFEFD; - ans = 64'hC0D0EB718D9CDCEA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"989603\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h3FC01FFFFFFFFFEF; - ReadData3E = 64'hCCC916E161AACEEE; - ans = 64'hCCC916E161AACEEE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"989909\n"); - end - ReadData1E = 64'hBF137F0147CBDE6D; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h3FDFFF6407F5C1A1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"990215\n"); - end - ReadData1E = 64'hC1F03FFFF7FFFFFF; - ReadData2E = 64'hC3F0001F7FFFFFFE; - ReadData3E = 64'hC7E5B399E0BBB6AA; - ans = 64'hC7E5B399E09B366A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"990521\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'h41D200000000FFFF; - ans = 64'h41D200000010FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"990827\n"); - end - ReadData1E = 64'hC1B0EE7ED613B6E0; - ReadData2E = 64'hC3F0504B43F10D03; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'h45B14376F61A6E2B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"991133\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hBFE7FFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"991439\n"); - end - ReadData1E = 64'h4068B9229919C3B2; - ReadData2E = 64'hC1F9CD735BDB5221; - ReadData3E = 64'h3BF8F8569B788D11; - ans = 64'hC273EF5E2D8D3101; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"991745\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h43EFE0000FFFFFFF; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"992051\n"); - end - ReadData1E = 64'hC3C0000000003FBF; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'hBD0FFFFFFFFFC001; - ans = 64'hC3B0000000003FBF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"992357\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBFF00000001FFFFD; - ReadData3E = 64'h43400000000FDFFF; - ans = 64'h43400000000FDFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"992663\n"); - end - ReadData1E = 64'h4021FFFEFFFFFFFF; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'hBFD0000000000001; - ans = 64'h4010FFFF00000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"992969\n"); - end - ReadData1E = 64'h3FD43A64D1B392BB; - ReadData2E = 64'h40A2000000400000; - ReadData3E = 64'h3FCFF00FFFFFFFFE; - ans = 64'h4086C3B06D3AEEA6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"993275\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'h3FB0008000002000; - ans = 64'h3FE20010000003FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"993581\n"); - end - ReadData1E = 64'hBFEFFFFEFFFFFFDF; - ReadData2E = 64'h47F0000001C00000; - ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'hC7EFFFFF037FFFC3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"993887\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h3FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"994193\n"); - end - ReadData1E = 64'h47F400000000001E; - ReadData2E = 64'h403D60E42520C790; - ReadData3E = 64'h5FFFFFFFBFFFFFEE; - ans = 64'h5FFFFFFFBFFFFFEE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"994499\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h8D2FFFFFFFFF7F00; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"994805\n"); - end - ReadData1E = 64'hBE7FFFFFF0000080; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'hBFEFD6F62F0019CE; - ans = 64'hBFEFD6F66F0019AE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"995111\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h406F7FFFFFDFFFFE; - ReadData3E = 64'h3FF91C0E0D8CFD19; - ans = 64'h405FE470381633F1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"995417\n"); - end - ReadData1E = 64'hC7EFFC001FFFFFFE; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'hC7EFFC0020000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"995723\n"); - end - ReadData1E = 64'h409FFEFBFFFFFFFF; - ReadData2E = 64'h47E0003FFF7FFFFE; - ReadData3E = 64'h0020000FFFFFFFFB; - ans = 64'h488FFF7BFAF0081B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"996029\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'hB9500000002007FF; - ans = 64'h3FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"996335\n"); - end - ReadData1E = 64'h0021FBFFFFFFFFFE; - ReadData2E = 64'hD2657E7C804AB0C5; - ReadData3E = 64'h4000000000000000; - ans = 64'h4000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"996641\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'hBFD0000000000001; - ans = 64'h3FE7FFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"996947\n"); - end - ReadData1E = 64'hC3E020001FFFFFFE; - ReadData2E = 64'hC01800000007FFFF; - ReadData3E = 64'hC1FFFFF7FFFFFFDF; - ans = 64'h440830002FF81000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"997253\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBA4FFFFFF0003FFF; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"997559\n"); - end - ReadData1E = 64'h3FC23813383D12F2; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; - ReadData3E = 64'hC01000001FF00000; - ans = 64'hC00DB8FDD8D85DA2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"997865\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hB810DF99665D6F69; - ReadData3E = 64'h43F0000800100000; - ans = 64'h43F0000800100000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"998171\n"); - end - ReadData1E = 64'h3FF1A6FD72CBC7F4; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'h4001A6FD72CBC7F4; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"998477\n"); - end - ReadData1E = 64'h40040000003FFFFF; - ReadData2E = 64'h3FDFFFBFFFFE0000; - ReadData3E = 64'h3FFFFFFFFC000001; - ans = 64'h4009FFEBFE1F5FC0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"998783\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h4000000000000001; - ReadData3E = 64'hBFCFFFFEFF000000; - ans = 64'h3FE8000040400001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"999089\n"); - end - ReadData1E = 64'hC34F85E5C3567603; - ReadData2E = 64'hC1D000000080FFFF; - ReadData3E = 64'hBFF0000000000001; - ans = 64'h452F85E5C4549D8D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"999395\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'h3FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"999701\n"); - end - ReadData1E = 64'h37EFFFFF00000003; - ReadData2E = 64'h5E90000001BFFFFE; - ReadData3E = 64'h47F0000020000002; - ans = 64'h568FFFFF037FFFE3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1000007\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h41C609CDCAAE88A3; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFF4FB191A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1000313\n"); - end - ReadData1E = 64'hC060008000FFFFFF; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'h25C2C89884490777; - ans = 64'hC080008000FFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1000619\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC3DC007FFFFFFFFF; - ReadData3E = 64'h00032CA7CDBDDF36; - ans = 64'hC3CC007FFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1000925\n"); - end - ReadData1E = 64'h802FFFFFE0040000; - ReadData2E = 64'h4010000000000000; - ReadData3E = 64'h0010000000000000; - ans = 64'h804DFFFFE0040000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1001231\n"); - end - ReadData1E = 64'hB80C07FFFFFFFFFE; - ReadData2E = 64'hBFE800000000003F; - ReadData3E = 64'h40241C223A4D9841; - ans = 64'h40241C223A4D9841; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1001537\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h4010000000000000; - ReadData3E = 64'h40000007FFFFC000; - ans = 64'h40100003FFFFE000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1001843\n"); - end - ReadData1E = 64'hC000000000BFFFFE; - ReadData2E = 64'hB7FFFFDFFFFBFFFE; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h3FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1002149\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'h4000000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1002455\n"); - end - ReadData1E = 64'hC03FFFFF7FFC0000; - ReadData2E = 64'h380FFFFFFFFFF807; - ReadData3E = 64'h40479C03BA46E5FF; - ans = 64'h40479C03BA46E5FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1002761\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC0105FFFFFFFFFFF; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'h4017CFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1003067\n"); - end - ReadData1E = 64'h32A659D12B3A57E2; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'hC0501FFE00000000; - ans = 64'hC0501FFE00000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1003373\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC3E0207FFFFFFFFF; - ReadData3E = 64'h402003FFFFFFFFDE; - ans = 64'hC3D0207FFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1003679\n"); - end - ReadData1E = 64'h381FFFFBFFEFFFFF; - ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'h8000000000000001; - ans = 64'h384FFFFBFFEFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1003985\n"); - end - ReadData1E = 64'h3B50000080000040; - ReadData2E = 64'h43CFFFE003FFFFFF; - ReadData3E = 64'hC1DFFFFFDFFFFEFF; - ans = 64'hC1DFFFFFDFFFFAFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1004291\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'hC0210341F15BAF08; - ans = 64'h432FFFFFFFFFFFEE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1004597\n"); - end - ReadData1E = 64'hFFD00007FFFFE000; - ReadData2E = 64'h4040010000200000; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1004903\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'h0010000000000000; - ans = 64'h4330000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1005209\n"); - end - ReadData1E = 64'h115FFBFFFFFC0000; - ReadData2E = 64'h3F3FFFFFBFFF8000; - ReadData3E = 64'hFFDBFFFFEFFFFFFF; - ans = 64'hFFDBFFFFEFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1005515\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC035395F6673F88F; - ReadData3E = 64'hC010000000000000; - ans = 64'hC02D395F6673F88E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1005821\n"); - end - ReadData1E = 64'h002FFC00FFFFFFFF; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'h00198167B6DD2E02; - ans = 64'h038FFC00FFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1006127\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBFFE0B95ECD9ACF7; - ReadData3E = 64'h3FD0000080000007; - ans = 64'hBFE60B95ACD9ACF3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1006433\n"); - end - ReadData1E = 64'h4806C87C6E9AD566; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1006739\n"); - end - ReadData1E = 64'hC019E1FC6C077592; - ReadData2E = 64'h3CAC9006ED57E4C3; - ReadData3E = 64'h40100007FFFFBFFE; - ans = 64'h40100007FFFFBFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1007045\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'hBFEFFFFFEFFEFFFF; - ans = 64'h433FFFFFFFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1007351\n"); - end - ReadData1E = 64'h3D2666AE90703854; - ReadData2E = 64'hBC30FFFFFFFF7FFE; - ReadData3E = 64'h3FD0000000000000; - ans = 64'h3FD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1007657\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'h8000000000000001; - ans = 64'h7FCFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1007963\n"); - end - ReadData1E = 64'h7FF78D4C8A6F6B33; - ReadData2E = 64'h1EEF6DBA3B66A8C5; - ReadData3E = 64'hC12FFDFBFFFFFFFF; - ans = 64'h7FFF8D4C8A6F6B33; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1008269\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h4340000010000020; - ReadData3E = 64'h4000000000000001; - ans = 64'h4330000010000021; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1008575\n"); - end - ReadData1E = 64'h3FC07FFF7FFFFFFE; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'hC3E631875CDB7E45; - ans = 64'h7FB07FFF7FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1008881\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBF2000001FFBFFFE; - ReadData3E = 64'h43E0000012000000; - ans = 64'h43E0000012000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1009187\n"); - end - ReadData1E = 64'h3FD45A9AEEFFF3C6; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1009493\n"); - end - ReadData1E = 64'hBED003FFC0000000; - ReadData2E = 64'hC00FFDFFFFFEFFFE; - ReadData3E = 64'hBF4FFFFFFBFFFFF7; - ans = 64'hBF4F7FE7FFFFE3F8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1009799\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'h3FB7FFE000000000; - ans = 64'h7FDFFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1010105\n"); - end - ReadData1E = 64'h3F3FFFFFFDFFFFFE; - ReadData2E = 64'hB81FFF0000FFFFFE; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hBCA0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1010411\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1010717\n"); - end - ReadData1E = 64'h8FFC99FE1EB38741; - ReadData2E = 64'hC1EFFEBFFFFFFFFF; - ReadData3E = 64'h43C000200003FFFE; - ans = 64'h43C000200003FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1011023\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBFEFFFFFC2000000; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'hC003FFFFF83FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1011329\n"); - end - ReadData1E = 64'hC070000000FFBFFF; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'hC1C6E2D6423AD7C0; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1011635\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h4060020007FFFFFF; - ReadData3E = 64'hBFCFEFBFFFFFFFFF; - ans = 64'h404FE4104FFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1011941\n"); - end - ReadData1E = 64'h80222D75B3139904; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'hFFE0000000000000; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1012247\n"); - end - ReadData1E = 64'hC7F478EFD91BB2AE; - ReadData2E = 64'h24B0000000080006; - ReadData3E = 64'h7FDFFFFFFFFDFFEE; - ans = 64'h7FDFFFFFFFFDFFEE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1012553\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'h2B8FFFFFFFFF83FE; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1012859\n"); - end - ReadData1E = 64'h7FDFFFFFFFFF5FFF; - ReadData2E = 64'h401FFF8000000001; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1013165\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1013471\n"); - end - ReadData1E = 64'hBFC92B62A147BA62; - ReadData2E = 64'hC10FF800000000FF; - ReadData3E = 64'h3FCFFDFFFFFC0000; - ans = 64'h40E9251FC81F693B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1013777\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h434FFFEFFFFBFFFE; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'h433FFFEFFFFBFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1014083\n"); - end - ReadData1E = 64'hBF7FEFFFEFFFFFFE; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'hC0EFFFFFFFF9FFFF; - ans = 64'hC0EFFFFFFFF9FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1014389\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBFE581C023E170BC; - ReadData3E = 64'hFFF000003FBFFFFF; - ans = 64'hFFF800003FBFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1014695\n"); - end - ReadData1E = 64'hC00DC00000000000; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'h4340000000000001; - ans = 64'h4340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1015001\n"); - end - ReadData1E = 64'h4800000080000000; - ReadData2E = 64'h381C5A57C936F7B7; - ReadData3E = 64'h4808000000000FFE; - ans = 64'h4808000000000FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1015307\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'h3CA0000FFFF7FFFF; - ans = 64'h3CA0000FFFF7FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1015613\n"); - end - ReadData1E = 64'hBFEFFFFFBFFFDFFF; - ReadData2E = 64'hBFEFFF000FFFFFFF; - ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'h3FEFFEFFD001DFDF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1015919\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1016225\n"); - end - ReadData1E = 64'h3940000014000000; - ReadData2E = 64'h001FFFBFFFFFFFFF; - ReadData3E = 64'hB95FFFFFC003FFFF; - ans = 64'hB95FFFFFC003FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1016531\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h8ADFFFFFF000000F; ReadData3E = 64'hBFE0000000000000; - ans = 64'hBFE0000000000000; + ans = 64'hBFE0000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -129655,51 +38472,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1016837\n"); - end - ReadData1E = 64'h406DF9FFE3D019C9; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'h41C0000000007EFF; - ans = 64'h41C0000000007EFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1017143\n"); + $fwrite(fp,"985984\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h43CFFFFFFFFFFBFF; - ReadData3E = 64'h4000040001FFFFFE; - ans = 64'h43BFFFFFFFFFFBFE; + ReadData2E = 64'h3CA0000000043FFF; + ReadData3E = 64'h400E31B2B15FFC81; + ans = 64'h400E31B2B15FFC81; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -129733,12 +38511,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1017449\n"); + $fwrite(fp,"986985\n"); end - ReadData1E = 64'hCE8FFFFFFFFFFFE8; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; + ReadData1E = 64'h3E8FFF00003FFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'hC01FFFFFFF00003E; + ans = 64'hC01FFFFFF700403E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -129772,439 +38550,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1017755\n"); - end - ReadData1E = 64'h0960000800100000; - ReadData2E = 64'h403FFC0001000000; - ReadData3E = 64'h41D7FFFFFFFFFFC0; - ans = 64'h41D7FFFFFFFFFFC0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1018061\n"); + $fwrite(fp,"987986\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'hC1FFFFFFE0003FFF; - ans = 64'hC1FFFFFFE0003FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1018367\n"); - end - ReadData1E = 64'h410FFFF7FDFFFFFE; - ReadData2E = 64'h480BFFFFC0000000; - ReadData3E = 64'h0000000000000000; - ans = 64'h492BFFF8BE401002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1018673\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'h4340000000000001; - ans = 64'h4340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1018979\n"); - end - ReadData1E = 64'h43EFDF7FFFFFFFFF; - ReadData2E = 64'hB7E0001007FFFFFF; - ReadData3E = 64'hB4C000201FFFFFFF; - ans = 64'hBBDFDF9FEF6FBFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1019285\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC1DFFFFFFFFEFDFE; - ReadData3E = 64'h3FD0000000000001; - ans = 64'hC1CFFFFFFFDEFDFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1019591\n"); - end - ReadData1E = 64'hC080000000201000; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'h41CFFDFFFFFFFFFE; - ans = 64'h41CFFDFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1019897\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hFFF0100000000002; - ReadData3E = 64'hBF9FDFFFEFFFFFFF; - ans = 64'hFFF8100000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1020203\n"); - end - ReadData1E = 64'h480FFFFFE00003FF; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'hC4BFFFFFE00003FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1020509\n"); - end - ReadData1E = 64'h43DD2781CF9BF717; - ReadData2E = 64'hBFB1000000000006; - ReadData3E = 64'hB7E0000000001FDF; - ans = 64'hC39EF9F9EC95B693; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1020815\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'h37E0041FFFFFFFFF; - ans = 64'hBC90000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1021121\n"); - end - ReadData1E = 64'h4AA000000003FFF0; - ReadData2E = 64'hBFFFFFFFFFEFFC00; + ReadData2E = 64'hC3FFEC0000000000; ReadData3E = 64'h7FF0000000000001; ans = 64'h7FF8000000000001; FrmE = 3'b000; @@ -130240,12 +38589,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1021427\n"); + $fwrite(fp,"988987\n"); + end + ReadData1E = 64'h401000003BFFFFFF; + ReadData2E = 64'hBFDFFF7FBFFFFFFF; + ReadData3E = 64'h47EFFFDFFFFFFFFF; + ans = 64'h47EFFFDFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"989988\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -130279,12 +38667,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1021733\n"); + $fwrite(fp,"990989\n"); end - ReadData1E = 64'h4010000008000001; - ReadData2E = 64'h3FD00FFF00000000; - ReadData3E = 64'hBFC000400000007E; - ans = 64'h3FEC1FEE100FFEE3; + ReadData1E = 64'h3FD0000000080010; + ReadData2E = 64'hBFCFDFFFFFFFFF7F; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFF00FFFFFF8081; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -130318,12 +38706,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1022039\n"); + $fwrite(fp,"991990\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h472FC0003FFFFFFF; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; - ans = 64'h471FC0003FFFFFFE; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'hBE961A31DED27C3B; + ans = 64'h3FDFFFFE9E5CE212; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -130357,12 +38745,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1022345\n"); + $fwrite(fp,"992991\n"); end - ReadData1E = 64'hC80FFFFFBFFFFFDF; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'h798FFF0040000000; - ans = 64'h798FFF0040000000; + ReadData1E = 64'hC8000005FFFFFFFE; + ReadData2E = 64'hC010000007FFFFBF; + ReadData3E = 64'hC5001FFFFFFFEFFF; + ans = 64'h48200006080002B9; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -130396,12 +38784,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1022651\n"); + $fwrite(fp,"993992\n"); + end + ReadData1E = 64'hC0300000000FFFFD; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'h0010000000000000; + ans = 64'hC0400000000FFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"994993\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hB400E44229C276B0; - ReadData3E = 64'h403020001FFFFFFF; - ans = 64'h403020001FFFFFFF; + ReadData2E = 64'h43EE000000000004; + ReadData3E = 64'hC0500003FFFFDFFF; + ans = 64'h43DE000000000003; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -130435,12 +38862,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1022957\n"); + $fwrite(fp,"995994\n"); end - ReadData1E = 64'hB48784AE13E55D35; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'hC000000000000000; - ans = 64'hC000000000000000; + ReadData1E = 64'hBFDFDFFFFFFFFF7F; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h43C5374C74EBE9AA; + ans = 64'h43C5374C74EBE9AA; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -130474,51 +38901,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1023263\n"); - end - ReadData1E = 64'h4340000001FFFFFE; - ReadData2E = 64'hC1F07FFFFFFF7FFE; - ReadData3E = 64'hC3F1FFFFFFFEFFFF; - ans = 64'hC5408000920F7FFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1023569\n"); + $fwrite(fp,"996995\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBFD0000000000000; - ReadData3E = 64'h42B0000002100000; - ans = 64'h42B00000020FFFE0; + ReadData2E = 64'hBFFCEE5202CD7FE5; + ReadData3E = 64'hC010000000000001; + ans = 64'hC0139DCA4059AFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -130552,284 +38940,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1023875\n"); + $fwrite(fp,"997996\n"); end - ReadData1E = 64'hCE71FFFFFFFFFFFB; - ReadData2E = 64'h9B2FFFFFFFFFFF6E; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1024181\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'h400EFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1024487\n"); - end - ReadData1E = 64'hC194000000001000; - ReadData2E = 64'h43B496260249CFD3; - ReadData3E = 64'h400FEFFFFDFFFFFE; - ans = 64'hC559BBAF82DC585E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1024793\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h5C6B01BA6B0ECB17; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'h5C5B01BA6B0ECB16; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1025099\n"); - end - ReadData1E = 64'hBFF0000000001002; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'h30A0000FFFFFFF7F; - ans = 64'h3FE0000000001001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1025405\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h4080000000FFFFC0; - ReadData3E = 64'h37EFE0007FFFFFFF; - ans = 64'h4070000000FFFFBF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1025711\n"); - end - ReadData1E = 64'hBFC4195BFCEF85E3; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h3FF14195BFCEF85F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1026017\n"); - end - ReadData1E = 64'hFFDFFFFFFFFFF7DE; - ReadData2E = 64'hC3CFFFFFFFBFF7FE; - ReadData3E = 64'hC03FFFFF003FFFFE; + ReadData1E = 64'h7FE0000000000080; + ReadData2E = 64'h401FFFFFFFFC0020; + ReadData3E = 64'h3E3FFFFFDFFFFFDF; ans = 64'h7FF0000000000000; FrmE = 3'b000; #10 @@ -130864,12 +38979,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1026323\n"); + $fwrite(fp,"998997\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'h434D28185A46B2EB; - ans = 64'h434D28185A46B2EB; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4023FFFFFFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -130903,12 +39018,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1026629\n"); + $fwrite(fp,"999998\n"); end - ReadData1E = 64'hB8DFFFFFFFF00010; - ReadData2E = 64'h3C8FEFDFFFFFFFFE; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'h434FFFFFFFFFFFFE; + ReadData1E = 64'hC01FFFFFFFF00007; + ReadData2E = 64'h41CB14DD859140AD; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC1FB14DD8583B644; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -130942,12 +39057,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1026935\n"); + $fwrite(fp,"1000999\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'hC000000000000000; - ans = 64'hC002000000000000; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h41D003FFFFF00000; + ans = 64'h41D0040000F00000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -130981,12 +39096,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1027241\n"); + $fwrite(fp,"1002000\n"); end - ReadData1E = 64'h8D1CB6E31C42D6D0; - ReadData2E = 64'h4026B2B4559344C6; - ReadData3E = 64'hC7EFFCFFFFFFFFFF; - ans = 64'hC7EFFCFFFFFFFFFF; + ReadData1E = 64'h3FEFFBFDFFFFFFFE; + ReadData2E = 64'hBFFFFFEFFFFFFF7E; + ReadData3E = 64'hC3DE0000000003FE; + ans = 64'hC3DE0000000003FE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -131020,1414 +39135,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1027547\n"); + $fwrite(fp,"1003001\n"); end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h3FDFFFF801FFFFFF; - ReadData3E = 64'h8010000000000000; - ans = 64'h3FCFFFF801FFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1027853\n"); - end - ReadData1E = 64'hC028000001FFFFFF; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'h41EFC00020000000; - ans = 64'h41EFC00020C00000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1028159\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC3EFFFFFFBFFFFFF; - ReadData3E = 64'hC3D8697088B915AB; - ans = 64'hC3EC34B8425C8AD5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1028465\n"); - end - ReadData1E = 64'h407C66F7D3FB5A4F; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hC07C76F7D3FB5A4E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1028771\n"); - end - ReadData1E = 64'hBFC937040830C79E; - ReadData2E = 64'hBFBFFE0100000000; - ReadData3E = 64'hBE3FFFFF7FFF7FFF; - ans = 64'h3F993570E1A866D3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1029077\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBFEFFFFFFFFFFFFE; - ReadData3E = 64'hBF4FFFFFFFFC03FF; - ans = 64'hBFE007FFFFFFFEFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1029383\n"); - end - ReadData1E = 64'h416FFFFEFFF7FFFE; - ReadData2E = 64'h3FE0000008000002; - ReadData3E = 64'hC340000000000000; - ans = 64'hC33FFFFFFF800004; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1029689\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'h3FF0000000000001; - ans = 64'h3FE0000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1029995\n"); - end - ReadData1E = 64'h7FFFFFF0FFFFFFFF; - ReadData2E = 64'hBF6000000FFFFFFE; - ReadData3E = 64'h3E9F8F47F01A6A7B; - ans = 64'h7FFFFFF0FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1030301\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h380DACDF6E0D7A8D; - ReadData3E = 64'h0000000000000001; - ans = 64'h37FDACDF6E0D7A8C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1030607\n"); - end - ReadData1E = 64'h401FE148734D4B74; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'h281FFFF00000000E; - ans = 64'hC01FE148734D4B76; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1030913\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h41E0000FFFFFFFBF; - ReadData3E = 64'hFFD88149181B8BAA; - ans = 64'hFFD88149181B8BAA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1031219\n"); - end - ReadData1E = 64'hC08250FEC0C6C7E6; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'h409252FEC0C6C7E5; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1031525\n"); - end - ReadData1E = 64'h432EE7DCB359DC6B; - ReadData2E = 64'h40B074A36C4386CA; - ReadData3E = 64'hBFFFFFE0007FFFFE; - ans = 64'h43EFC9295EA60C0F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1031831\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBFFFFFFFFFFFFFFF; - ReadData3E = 64'h400FFEFFFFFEFFFE; - ans = 64'h4007FEFFFFFEFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1032137\n"); - end - ReadData1E = 64'hC343B1E8463B2B26; - ReadData2E = 64'h7FF007FFFFFF7FFF; - ReadData3E = 64'h4010000000000001; - ans = 64'h7FF807FFFFFF7FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1032443\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'hBFEFFFFFFFFFFFFF; - ans = 64'hBFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1032749\n"); - end - ReadData1E = 64'h40190979C4E0CA3F; - ReadData2E = 64'hBFE000001001FFFE; - ReadData3E = 64'hBCBBFFFFFFFFFFFC; - ans = 64'hC0090979DDED6531; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1033055\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h825FFFFFFFFFFFFE; - ReadData3E = 64'h7FFFFFFFFFFFFFFF; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1033361\n"); - end - ReadData1E = 64'hC7F07F7FFFFFFFFF; - ReadData2E = 64'hC000000000000000; - ReadData3E = 64'h41EFFFFFEFFFFFF8; - ans = 64'h48007F7FFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1033667\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC0A000000002001E; - ReadData3E = 64'hFFFC4C6E938BCF63; - ans = 64'hFFFC4C6E938BCF63; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1033973\n"); - end - ReadData1E = 64'h3EF4000000001FFF; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'hBFD0000000000000; - ans = 64'hBFD000A000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1034279\n"); - end - ReadData1E = 64'h001FFF01FFFFFFFF; - ReadData2E = 64'h7FF020000001FFFF; - ReadData3E = 64'hC00FFFFFFF002000; - ans = 64'h7FF820000001FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1034585\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'h41FFFF7FFFFFFFFD; - ans = 64'h41FFFF7FFFDFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1034891\n"); - end - ReadData1E = 64'h40600000002007FF; - ReadData2E = 64'h404FFFFFFFFEFFBF; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'h40BFFC00003F0FBD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1035197\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'h3FDFFFFFFFFFFFFE; - ans = 64'hBFF7FFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1035503\n"); - end - ReadData1E = 64'h7FEFFFFFFFFFF01F; - ReadData2E = 64'hBFC00000003FFFBF; - ReadData3E = 64'h41684E7E00A71AE6; - ans = 64'hFFC00000003FF7CE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1035809\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hCDC6B77D8EB7FA00; - ReadData3E = 64'hFFEFFFFFFFFFFFFE; - ans = 64'hFFEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1036115\n"); - end - ReadData1E = 64'hBAB0000FFFFFFFEF; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'h939FF7FFFFFE0000; - ans = 64'h3AD0000FFFFFFFEF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1036421\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hFFF0001FFFFF8000; - ReadData3E = 64'h402FFF7000000000; - ans = 64'hFFF8001FFFFF8000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1036727\n"); - end - ReadData1E = 64'h380FFFFBFFFFFFFF; - ReadData2E = 64'hC010000000000001; - ReadData3E = 64'h3CA0000000000001; - ans = 64'h3CA0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1037033\n"); - end - ReadData1E = 64'h801DFFFFFFFDFFFF; - ReadData2E = 64'hC0800001FFFFFFC0; - ReadData3E = 64'hBFD00101FFFFFFFE; - ans = 64'hBFD00101FFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1037339\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC010000000000001; - ReadData3E = 64'hCA404000000007FE; - ans = 64'hCA404000000007FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1037645\n"); - end - ReadData1E = 64'h801FFFD800000000; - ReadData2E = 64'h3FCFFFFFFDFFFFFD; - ReadData3E = 64'h3FFFFFFFFFFFFFFE; - ans = 64'h3FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1037951\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'hBFD0000000000000; - ans = 64'hC010FFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1038257\n"); - end - ReadData1E = 64'h9DE0000007FEFFFF; - ReadData2E = 64'hC3E001FFFFFF8000; - ReadData3E = 64'h400FFFFFAFFFFFFE; - ans = 64'h400FFFFFAFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1038563\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h37F0000017FFFFFF; + ReadData1E = 64'hE0ADFFDFFFFFFFFF; + ReadData2E = 64'h434FFFFFFFFFFFFF; ReadData3E = 64'h7FE0000000000000; ans = 64'h7FE0000000000000; FrmE = 3'b000; @@ -132463,51 +39174,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1038869\n"); - end - ReadData1E = 64'h3FB1FFFFFFFFEFFE; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'h40CF7FFFC0000000; - ans = 64'h40CF7FB7C0000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1039175\n"); + $fwrite(fp,"1004002\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hFFDE8D5A73D26464; - ReadData3E = 64'h37F9F76C367CE95E; - ans = 64'hFFCE8D5A73D26463; + ReadData2E = 64'hBD1D258D8B42B5FD; + ReadData3E = 64'hBFED93584C045CF8; + ans = 64'hBFED93584C045D6D; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -132541,12 +39213,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1039481\n"); + $fwrite(fp,"1005003\n"); end - ReadData1E = 64'h3E0FA37875781127; - ReadData2E = 64'hC340000000000000; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'hC15FA37875781127; + ReadData1E = 64'h0BF0000007F00000; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h5FAFFFFF80FFFFFF; + ans = 64'h5FAFFFFF80FFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -132580,12 +39252,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1039787\n"); + $fwrite(fp,"1006004\n"); end - ReadData1E = 64'hB81F7FFFFFFFDFFF; - ReadData2E = 64'hC800000100000000; - ReadData3E = 64'h6CB1FFFFFFBFFFFE; - ans = 64'h6CB1FFFFFFBFFFFE; + ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'h40EFDFF7FFFFFFFF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h40DFE017FFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -132619,7 +39291,1177 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1040093\n"); + $fwrite(fp,"1007005\n"); + end + ReadData1E = 64'hA90FFFFFFF0007FE; + ReadData2E = 64'hC530000000001400; + ReadData3E = 64'h8027FFFFFFFDFFFE; + ans = 64'h2E4FFFFFFF002FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1008006\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1009007\n"); + end + ReadData1E = 64'hC343ADE4E06E5425; + ReadData2E = 64'hC04EFFFFBFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1010008\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hC342CED8906BBC91; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1011009\n"); + end + ReadData1E = 64'hBFE86EA08941DE15; + ReadData2E = 64'h401FFFBFDFFFFFFE; + ReadData3E = 64'h4D40FFFFF7FFFFFE; + ans = 64'h4D40FFFFF7FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1012010\n"); + end + ReadData1E = 64'h41F0402000000000; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1013011\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFE8000000; + ReadData3E = 64'h47EFFFFFFFFFFBFF; + ans = 64'h47EFFFFFFFFFFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1014012\n"); + end + ReadData1E = 64'h4EB0000003FFFFFA; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h3FDFFFFEFFFFEFFF; + ans = 64'h3FDFFFFEFFFFEFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1015013\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'h3FC5A9C571728038; + ReadData3E = 64'h8010000000000001; + ans = 64'h3FB5A9C571728037; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1016014\n"); + end + ReadData1E = 64'hAD000000FFE00000; + ReadData2E = 64'h40B0000000007DFE; + ReadData3E = 64'h3FCFFFFC00200000; + ans = 64'h3FCFFFFC00200000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1017015\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hBC8FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1018016\n"); + end + ReadData1E = 64'h3AEFC00000000007; + ReadData2E = 64'h43C00000077FFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h402000003F80001D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1019017\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'hBFFFFFFFF7FFFFFB; + ans = 64'hBFFFFFFFF7FFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1020018\n"); + end + ReadData1E = 64'hC581BFFFFFFFFFFE; + ReadData2E = 64'h402EEF2A3EC3CDB8; + ReadData3E = 64'hBA500000007FDFFF; + ans = 64'hC5C128A96ED09C1A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1021019\n"); + end + ReadData1E = 64'h449FC003FFFFFFFF; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hC47FC00400000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1022020\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'h37BFFFFEFE000000; + ReadData3E = 64'h45272883CB1D6DC9; + ans = 64'h45272883CB1D6DC9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1023021\n"); + end + ReadData1E = 64'h72EFFFFFE01FFFFF; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h001003FFFFFBFFFF; + ans = 64'hF2DFFFFFE01FFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1024022\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'h41E400FA74559DAF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1025023\n"); + end + ReadData1E = 64'h41AFFFFFFFE1FFFE; + ReadData2E = 64'hCD21FEC03EAE5C0C; + ReadData3E = 64'h41050BF7668224B8; + ans = 64'hCEE1FEC03E9D7D37; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1026024\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1027025\n"); + end + ReadData1E = 64'h2D0A3EE6D3E58EC4; + ReadData2E = 64'h44C1B4D04A13AF0E; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1028026\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h428E777E7599FB49; + ans = 64'h428E777E7599F749; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1029027\n"); + end + ReadData1E = 64'hC03FFFFF80000001; + ReadData2E = 64'hEDBFFF7FFFFFFFDF; + ReadData3E = 64'h3FC000000007FBFF; + ans = 64'h6E0FFF7F8001FFE0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1030028\n"); + end + ReadData1E = 64'hB7E0007FFFFFFBFF; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'h37F0007FFFFFFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1031029\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'h7FD7B523E8E9943A; + ReadData3E = 64'hBFD0000000000207; + ans = 64'h7FC7B523E8E99439; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1032030\n"); + end + ReadData1E = 64'h401FFFBFFFFFFBFF; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hC1D1FFFFFFFFFBFF; + ans = 64'hC1D2000007FFEBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1033031\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'h0020000100000800; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1034032\n"); + end + ReadData1E = 64'h43E0000000120000; + ReadData2E = 64'h3FB001000000001E; + ReadData3E = 64'h41FF80000003FFFF; + ans = 64'h43A001000402013E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1035033\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC01FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1036034\n"); + end + ReadData1E = 64'hB41DFFFFFFBFFFFE; + ReadData2E = 64'hBB07FFFFE0000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h2F367FFFE1CFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1037035\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; ReadData2E = 64'hC340000000000001; @@ -132658,12 +40500,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1040399\n"); + $fwrite(fp,"1038036\n"); end - ReadData1E = 64'hC3E000000FFFFFFC; - ReadData2E = 64'hBF8FEFFFFFFFEFFF; - ReadData3E = 64'hBFF0000000000000; - ans = 64'h437FF0001FEFEFF7; + ReadData1E = 64'h41E75D899FA00231; + ReadData2E = 64'hA75869C7351C6B35; + ReadData3E = 64'h4340FFFFDFFFFFFF; + ans = 64'h4340FFFFDFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -132697,129 +40539,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1040705\n"); + $fwrite(fp,"1039037\n"); end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'h3CA0000000000001; - ans = 64'hC33FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1041011\n"); - end - ReadData1E = 64'h3FD00FFFFC000000; - ReadData2E = 64'hE76F7B616143C433; - ReadData3E = 64'h47F0004000080000; - ans = 64'hE74F9ADCBAC62F9F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1041317\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h33E000FFFFFFFDFF; - ReadData3E = 64'hC340000000000001; - ans = 64'hC340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1041623\n"); - end - ReadData1E = 64'hFFFFFFEFFFFF7FFF; + ReadData1E = 64'hC3F00000103FFFFE; ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'hC03001FFFFFFFFFE; - ans = 64'hFFFFFFEFFFFF7FFF; + ReadData3E = 64'hC340000000000000; + ans = 64'h47500000103FFFFD; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -132853,12 +40578,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1041929\n"); + $fwrite(fp,"1040038\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBACFFBFDFFFFFFFF; - ReadData3E = 64'hC00007FFFFF7FFFE; - ans = 64'hC00007FFFFF7FFFE; + ReadData2E = 64'hBCA2CB3FB5052AA2; + ReadData3E = 64'hBBAFFF1FFFFFFFFE; + ans = 64'hBC92CB7FB3452AA1; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -132892,285 +40617,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1042235\n"); + $fwrite(fp,"1041039\n"); end - ReadData1E = 64'h4060803FFFFFFFFF; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1042541\n"); - end - ReadData1E = 64'h3FF040000000000F; - ReadData2E = 64'hC1FFFFFF7FFFFFF0; - ReadData3E = 64'h570000007FC00000; - ans = 64'h570000007FC00000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1042847\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'hC7EFFFFFFEFFFDFF; - ans = 64'hFFCFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1043153\n"); - end - ReadData1E = 64'hBFEFEFFFBFFFFFFE; - ReadData2E = 64'hA15FF00000000100; - ReadData3E = 64'h3FE0000000000001; - ans = 64'h3FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1043459\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'h801FFFFFFFFFFFFF; - ans = 64'hFFD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1043765\n"); - end - ReadData1E = 64'hBDE0A431843E6962; - ReadData2E = 64'hC007BF7F4F6FE319; - ReadData3E = 64'h7FD0000000002200; - ans = 64'h7FD0000000002200; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1044071\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC7E311181221223D; - ReadData3E = 64'h401FFFFFFFFFFFFF; - ans = 64'hC7D311181221223C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1044377\n"); - end - ReadData1E = 64'h60CC008000000000; + ReadData1E = 64'hBE80000002000800; ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'hBFDAB06782893A16; - ans = 64'hFFF0000000000000; + ReadData3E = 64'h42E000000001DFFF; + ans = 64'h7E800000020007FF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -133204,12 +40656,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1044683\n"); + $fwrite(fp,"1042040\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hC00FFFE000000002; - ReadData3E = 64'hBFDFFFFFFFFFF00F; - ans = 64'hC003FFEFFFFFFE02; + ReadData2E = 64'h40489E6DCB063E6A; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h40385E6DCB063E69; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -133243,12 +40695,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1044989\n"); + $fwrite(fp,"1043041\n"); end - ReadData1E = 64'h4040000000101FFE; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'h8000000000000000; - ans = 64'hFFF0000000000000; + ReadData1E = 64'h434F2BE27A9BA789; + ReadData2E = 64'hBFFFC00000000040; + ReadData3E = 64'hBFE0000600000000; + ans = 64'hC35EED8AB5A67078; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -133282,245 +40734,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1045295\n"); - end - ReadData1E = 64'h41C0EE6217580667; - ReadData2E = 64'hFFEFFFFFF7FFFFFC; - ReadData3E = 64'h3FF2E298683C3F2D; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1045601\n"); + $fwrite(fp,"1044042\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'h450FFFFFFFFFFFFF; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1045907\n"); - end - ReadData1E = 64'h380FFDFFFFFDFFFF; - ReadData2E = 64'hC3F0FFFFFFFFFEFE; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hBFDFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1046213\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'h000FFFFFFFFFFFFE; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1046519\n"); - end - ReadData1E = 64'hBFDFFEFFEFFFFFFE; - ReadData2E = 64'hBFDCAB6630300A64; - ReadData3E = 64'hC1DFFBFFFFFFE000; - ans = 64'hC1DFFBFFFFF18AC0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1046825\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hBFFFFF3FFFFFFFFF; - ReadData3E = 64'hC00FFFFFFFFFFFFE; - ans = 64'hC013FFE7FFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1047131\n"); - end - ReadData1E = 64'hFFD0080000007FFE; ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'h480ECB8DF4D61707; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; ans = 64'hFFFFFFFFFFFFFFFF; FrmE = 3'b000; #10 @@ -133555,12 +40773,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1047437\n"); + $fwrite(fp,"1045043\n"); end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'h002FFFFFFFFFFFFF; - ReadData3E = 64'h4944C0B502DF4D9E; - ans = 64'h4944C0B502DF4D9E; + ReadData1E = 64'hC1FFFFFFFC00FFFE; + ReadData2E = 64'h3810000000000700; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -133594,168 +40812,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1047743\n"); - end - ReadData1E = 64'hBCBFC01000000000; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1048049\n"); - end - ReadData1E = 64'hC2AFFFFFFFFFFFFF; - ReadData2E = 64'hBDFBFFFFFFFFFF7F; - ReadData3E = 64'hBF83698EAB72255D; - ans = 64'h40BBFFFD92CE2A10; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1048355\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFF; - ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'h801A50D4FC9D3CC9; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1048661\n"); - end - ReadData1E = 64'hBF94D8272D1C6FD0; - ReadData2E = 64'hBF8FFFFFFFFFF0FF; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h3F34D8272D1C760A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1048967\n"); + $fwrite(fp,"1046044\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; ReadData2E = 64'h0000000000000000; - ReadData3E = 64'h8000000000000000; - ans = 64'h0000000000000000; + ReadData3E = 64'h47F84EDCC8B9B1A6; + ans = 64'h47F84EDCC8B9B1A6; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -133789,12 +40851,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1049273\n"); + $fwrite(fp,"1047045\n"); end - ReadData1E = 64'h3F00000000100010; - ReadData2E = 64'h5E5BFFFFFFFFEFFF; - ReadData3E = 64'hBFDFF00007FFFFFE; - ans = 64'h5D6C0000001BF01B; + ReadData1E = 64'h380FFFFE07FFFFFF; + ReadData2E = 64'hBFDFEF30C877B842; + ReadData3E = 64'h37F001FFFBFFFFFF; + ans = 64'hB7EFDA5DAB00EFD9; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -133828,2233 +40890,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1049579\n"); + $fwrite(fp,"1048046\n"); end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hBFC0000009FFFFFF; - ReadData3E = 64'h4000000000000000; - ans = 64'h3FFEFFFFFF600000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1049885\n"); - end - ReadData1E = 64'hB7FDFBFFFFFFFFFE; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'h7FD000000000203F; - ans = 64'h7FD000000000203F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1050191\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h434FFFFFFFE0001F; - ReadData3E = 64'hBFFFFEFFFF7FFFFF; - ans = 64'h433FFFFFFFE0001B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1050497\n"); - end - ReadData1E = 64'hC0C00000400001FF; - ReadData2E = 64'h000FFFFFFFFFFFFF; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1050803\n"); - end - ReadData1E = 64'h4BC0040000003FFF; - ReadData2E = 64'h41DFE0000000FFFF; - ReadData3E = 64'h3FC0000FFFFFFFFF; - ans = 64'h4DAFE7F800017FBD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1051109\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; + ReadData1E = 64'hBFCB2F773531177B; ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'h7FDFFFFFF000001E; - ans = 64'h7FDFFFFFF000001E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1051415\n"); - end - ReadData1E = 64'h3FC0000001000010; - ReadData2E = 64'hBFF5BD425B6267A3; - ReadData3E = 64'hBCA0000000000000; - ans = 64'hBFC5BD425CBE3BE2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1051721\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h000FFFFFFFFFFFFE; - ReadData3E = 64'hFFF0000000000001; - ans = 64'hFFF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1052027\n"); - end - ReadData1E = 64'h52FFFFF801FFFFFF; - ReadData2E = 64'h3D30000000007FFF; - ReadData3E = 64'hBFE1B8A4DD23031A; - ans = 64'h503FFFF80200FFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1052333\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hBFE14F5BF1948F88; - ReadData3E = 64'hBFF0000000000001; - ans = 64'hBFF453D6FC6523E3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1052639\n"); - end - ReadData1E = 64'h40096DFEA6B9CF4D; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'hC3C2000000000040; - ans = 64'hC3C2000000000040; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1052945\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3F00000020080000; - ReadData3E = 64'h000BF714D245ED69; - ans = 64'h3EF000002007FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1053251\n"); - end - ReadData1E = 64'hC93FFFFFFBFFEFFF; - ReadData2E = 64'h0010000000000001; - ReadData3E = 64'hC34FFFFFFFFFFFFE; - ans = 64'hC34FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1053557\n"); - end - ReadData1E = 64'h5ED64804F957BD63; - ReadData2E = 64'h7FEA233C26339EFB; - ReadData3E = 64'hC7E79C84C2D4C3CC; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1053863\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h001FFFFFFFFFFFFF; - ReadData3E = 64'h353FDF8000000000; - ans = 64'h353FDF8000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1054169\n"); - end - ReadData1E = 64'hC1EFFFFFFBF80000; - ReadData2E = 64'h4050000000000000; - ReadData3E = 64'h0010000000000001; - ans = 64'hC24FFFFFFBF80000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1054475\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h001FFFFFFFFFFFFE; - ReadData3E = 64'h7FEFFFFFFFFFFFFF; - ans = 64'h7FEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1054781\n"); - end - ReadData1E = 64'h41D4C6B47A165676; - ReadData2E = 64'hBEEFFFFFFFFFFEFE; - ReadData3E = 64'hC027ABDD993EECCF; - ans = 64'hC0D4C9A9F5C97DAC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1055087\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hBFFAB60866FB2019; - ReadData3E = 64'h3FEFFFFFFFFFFFFF; - ans = 64'h3FC527DE64137F9F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1055393\n"); - end - ReadData1E = 64'h3FDEFFF7FFFFFFFE; - ReadData2E = 64'h3CA0000000000000; - ReadData3E = 64'h3FBFF7FFFFFC0000; - ans = 64'h3FBFF7FFFFFC0004; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1055699\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h38103FFFFFFFFFDF; - ReadData3E = 64'hC800020000000000; - ans = 64'hC800020000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1056005\n"); - end - ReadData1E = 64'h3FB000000010007F; - ReadData2E = 64'h3CA0000000000001; - ReadData3E = 64'h4340000000000000; - ans = 64'h4340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1056311\n"); - end - ReadData1E = 64'hC06FFFFFFEF00000; - ReadData2E = 64'hBCA3F00000000000; - ReadData3E = 64'hC1D659022B8CF3A6; - ans = 64'hC1D659022B8CF3A6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1056617\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'hFFE80000000000FF; - ans = 64'hFFE80000000000FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1056923\n"); - end - ReadData1E = 64'hBE5FFFFE0000007E; - ReadData2E = 64'hBFFFF8000007FFFE; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'h3E6FF7FE0088007B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1057229\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3CAFFFFFFFFFFFFF; - ReadData3E = 64'hC34FFFFFFFFFFFFE; - ans = 64'hC34FFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1057535\n"); - end - ReadData1E = 64'hBFFFFE000000003F; - ReadData2E = 64'hE5CC78B61B1FB3DF; - ReadData3E = 64'h7FEFFFFE00000001; - ans = 64'h7FEFFFFE00000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1057841\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hB52FFFFFFF0FFFFF; - ReadData3E = 64'hBFDFFFFFFFFFFFFE; - ans = 64'hBFDFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1058147\n"); - end - ReadData1E = 64'hC3DFFFFFA0000000; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'h40B00003FFFFFFE0; - ans = 64'hC3BFFFFF9FFFFFF0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1058453\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC030D5C41923E3C4; - ReadData3E = 64'h3FE080FFFFFFFFFF; - ans = 64'hC01F9B683247C786; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1058759\n"); - end - ReadData1E = 64'hC18FFFBFE0000000; - ReadData2E = 64'h3FD0000000000000; - ReadData3E = 64'hC010000000000001; - ans = 64'hC16FFFC060000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1059065\n"); - end - ReadData1E = 64'hC05F800007FFFFFE; - ReadData2E = 64'hBCB0000002200000; - ReadData3E = 64'h7FD000FFFFFFFFFF; - ans = 64'h7FD000FFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1059371\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3FD0000000000001; - ReadData3E = 64'hC3CFFFFFEFFFFFFC; - ans = 64'hC3CFFFFFEFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1059677\n"); - end - ReadData1E = 64'hC34FFDFFFFFFF000; - ReadData2E = 64'hC0621FFFFFFFFFFF; - ReadData3E = 64'hFFFFFFFFFFFFFFFE; - ans = 64'hFFFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1059983\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3FDFFFFFFFFFFFFF; - ReadData3E = 64'h4340000000000000; - ans = 64'h4340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1060289\n"); - end - ReadData1E = 64'h3B20000207FFFFFF; - ReadData2E = 64'h802000800000001F; - ReadData3E = 64'h3E804000000000FE; - ans = 64'h3E804000000000FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1060595\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h43403FFFFFFFDFFE; - ReadData3E = 64'h3FD0000000000000; - ans = 64'h43303FFFFFFFDFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1060901\n"); - end - ReadData1E = 64'hBBAFFFFC7FFFFFFE; - ReadData2E = 64'h3FDFFFFFFFFFFFFE; - ReadData3E = 64'h7FFF800007FFFFFE; - ans = 64'h7FFF800007FFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1061207\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h37BFE0003FFFFFFF; - ReadData3E = 64'h3F700000200007FE; - ans = 64'h3F700000200007FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1061513\n"); - end - ReadData1E = 64'hBFCFFFEDFFFFFFFF; - ReadData2E = 64'h3FE0000000000000; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'h400F00008FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1061819\n"); - end - ReadData1E = 64'h3FA000001FFFFFE0; - ReadData2E = 64'hBEA0020000001FFF; - ReadData3E = 64'h40EFFFFFFFFFFFE7; - ans = 64'h40EFFFFFFFFFF7E6; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1062125\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'hC02FFFFF000007FE; - ans = 64'hC02F7FFF000007FE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1062431\n"); - end - ReadData1E = 64'hC03BE7FA8F940E1A; - ReadData2E = 64'hC7FFBFFFFFFFDFFF; - ReadData3E = 64'h7FF0000000000000; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1062737\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3FE0000000000001; - ReadData3E = 64'hC010000000000001; - ans = 64'hC00E000000000002; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1063043\n"); - end - ReadData1E = 64'h7FF6F884134124A3; - ReadData2E = 64'h1124345EB2F9D7C2; - ReadData3E = 64'h3FF093DCB192A945; - ans = 64'h7FFEF884134124A3; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1063349\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC44FFFEFFFFBFFFE; - ReadData3E = 64'hBCA0000000000001; - ans = 64'hC43FFFEFFFFBFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1063655\n"); - end - ReadData1E = 64'h43F000FFFF7FFFFF; - ReadData2E = 64'h3FEFFFFFFFFFFFFF; - ReadData3E = 64'h3FC08000007FFFFF; - ans = 64'h43F000FFFF7FFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1063961\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3D7FFFC001FFFFFE; - ReadData3E = 64'h7FE2742ED7A37446; - ans = 64'h7FE2742ED7A37446; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1064267\n"); - end - ReadData1E = 64'hC02003FFE0000000; - ReadData2E = 64'h3FEFFFFFFFFFFFFE; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hC02403FFDFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1064573\n"); - end - ReadData1E = 64'h432A1E70319EA668; - ReadData2E = 64'hC3C00000000000EF; - ReadData3E = 64'hFFDFFFFBFFFFFFFC; - ans = 64'hFFDFFFFBFFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1064879\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3FF0000000000000; - ReadData3E = 64'hC08EAC5CED022B82; - ans = 64'hC08EA85CED022B82; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1065185\n"); - end - ReadData1E = 64'hBFC01AA92E0FD347; - ReadData2E = 64'h43DBFFDFFFFFFFFF; - ReadData3E = 64'hFFE0000000000001; - ans = 64'hFFE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1065491\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3FF0000000000001; - ReadData3E = 64'h400FFFFFFFFFFFFF; - ans = 64'h4011FFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1065797\n"); - end - ReadData1E = 64'hC0C08000000003FF; - ReadData2E = 64'hC1DFFFF3FFFFFFFE; - ReadData3E = 64'h41F9C64E718456C2; - ans = 64'h42B0819634E71C43; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1066103\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h4465F3D65FF408DD; - ReadData3E = 64'h001FFFFFFFFFFFFF; - ans = 64'h4455F3D65FF408DC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1066409\n"); - end - ReadData1E = 64'hB58FEFFC00000000; - ReadData2E = 64'h3FFFFFFFFFFFFFFF; - ReadData3E = 64'hBE600FFFF8000000; - ans = 64'hBE600FFFF8000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1066715\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h403000000010000F; - ReadData3E = 64'h7FD0001FDFFFFFFF; - ans = 64'h7FD0001FDFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1067021\n"); - end - ReadData1E = 64'hB810002000000000; - ReadData2E = 64'h3FFFFFFFFFFFFFFE; ReadData3E = 64'h3FF0000000000000; ans = 64'h3FF0000000000000; FrmE = 3'b000; @@ -136090,51 +40929,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1067327\n"); - end - ReadData1E = 64'h443FFFF800020000; - ReadData2E = 64'h232BFFFFFFFFF7FF; - ReadData3E = 64'hF7EFFFFFFF87FFFF; - ans = 64'hF7EFFFFFFF87FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1067633\n"); + $fwrite(fp,"1049047\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'hC01806C8304C3CA3; - ans = 64'hC01406C8304C3CA3; + ReadData2E = 64'h43ADFFFFFFFFFFFB; + ReadData3E = 64'h3D9FFFFD7FFFFFFE; + ans = 64'h439DFFFFFFFFFFF9; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136168,12 +40968,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1067939\n"); + $fwrite(fp,"1050048\n"); end - ReadData1E = 64'h40200007FFFFFFBF; - ReadData2E = 64'h43FFFFFFFFFFFF5F; - ReadData3E = 64'h434FFFFFFFFFFFFF; - ans = 64'h44300047FFFFFF6E; + ReadData1E = 64'h43F003FFFFFEFFFF; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h002F5A86AC591FCA; + ans = 64'h041003FFFFFF0000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136207,12 +41007,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1068245\n"); + $fwrite(fp,"1051049\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h4000000000000000; - ReadData3E = 64'hBFFFFFFFFFFFFFFE; - ans = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h4F9000000000043E; + ReadData3E = 64'h0000000000000001; + ans = 64'h4F8000000000043D; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136246,12 +41046,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1068551\n"); + $fwrite(fp,"1052050\n"); end - ReadData1E = 64'h417000000001001E; - ReadData2E = 64'hB4F1BB57032E8670; - ReadData3E = 64'hBFEFFFFFFFFF9FFF; - ans = 64'hBFEFFFFFFFFF9FFF; + ReadData1E = 64'hBF1FFFFFFFE00003; + ReadData2E = 64'h381FFFFFFFFBFEFE; + ReadData3E = 64'h800080000000007F; + ans = 64'hB74FFFFFFFDBFF01; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136285,12 +41085,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1068857\n"); + $fwrite(fp,"1053051\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC8048B8D53C7F5BB; + ReadData2E = 64'h3CA0000000000001; ReadData3E = 64'h800FFFFFFFFFFFFE; - ans = 64'hC7F48B8D53C7F5BA; + ans = 64'h3C90000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136324,12 +41124,480 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1069163\n"); + $fwrite(fp,"1054052\n"); end - ReadData1E = 64'hC01FFFFFFFFEFFF7; + ReadData1E = 64'h3FD0400000000000; + ReadData2E = 64'h4433FFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h44144FFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1055053\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'hBFB8001FFFFFFFFF; + ans = 64'h3F9FFF7FFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1056054\n"); + end + ReadData1E = 64'hC7FFE0003FFFFFFF; + ReadData2E = 64'h3A3FFFFBFFFFFFF7; + ReadData3E = 64'hC04002007FFFFFFF; + ans = 64'hC24FDFFC440FF9F7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1057055\n"); + end + ReadData1E = 64'hC3FF7FFFBFFFFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hC3EF7FFFBFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1058056\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFE; + ReadData2E = 64'hFFD07FFFFFFFFF7E; + ReadData3E = 64'h37EFFFFFFFC80000; + ans = 64'hFFC07FFFFFFFFF7D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1059057\n"); + end + ReadData1E = 64'h41CE000000FFFFFE; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h402D61C9A7F6D85D; + ans = 64'h41BE00000FB0E4D4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1060058\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFE; + ReadData2E = 64'h691FFFFFFFE10000; + ReadData3E = 64'h4340000000000001; + ans = 64'h690FFFFFFFE0FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1061059\n"); + end + ReadData1E = 64'h43F0002000000FFF; + ReadData2E = 64'hC000040007FFFFFF; + ReadData3E = 64'hBFDF278932FBC3DE; + ans = 64'hC400042010002002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1062060\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFE; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1063061\n"); + end + ReadData1E = 64'hF1EFFFFFFFFFF5FF; + ReadData2E = 64'hC02FFFF000400000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h722FFFF0003FF5FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1064062\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFE; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'h3FF2D7A8F29B64D8; + ans = 64'h40016BD4794DB26B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1065063\n"); + end + ReadData1E = 64'hC2DCD5DF8B9EBC2A; + ReadData2E = 64'h617FFFFFFF03FFFF; + ReadData3E = 64'h43EFFEFFFFFFFF00; + ans = 64'hE46CD5DF8ABBA7E9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1066064\n"); + end + ReadData1E = 64'hFFDFFFF100000000; ReadData2E = 64'h4000000000000001; - ReadData3E = 64'hBE4E000FFFFFFFFF; - ans = 64'hC0300000003B801C; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136363,12 +41631,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1069469\n"); + $fwrite(fp,"1067065\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h7FE1000000007FFF; - ReadData3E = 64'hC01F8000000001FE; - ans = 64'h7FD1000000007FFE; + ReadData2E = 64'h400FFFFFFBFFF7FE; + ReadData3E = 64'hBFC0000040000004; + ans = 64'h3FFDFFFFF3FFF7FC; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136402,168 +41670,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1069775\n"); + $fwrite(fp,"1068066\n"); end - ReadData1E = 64'h41EFFFFFFEFFFFBE; - ReadData2E = 64'h400FFFFFFFFFFFFF; - ReadData3E = 64'hBFE0000000000001; - ans = 64'h420FFFFFFEFBFFBD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1070081\n"); - end - ReadData1E = 64'hC18000000F000000; - ReadData2E = 64'h488000000000FFFE; - ReadData3E = 64'h41C010003FFFFFFE; - ans = 64'hCA1000000F00FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1070387\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h400FFFFFFFFFFFFE; - ReadData3E = 64'hB7E9007C3CE5D513; - ans = 64'h3FFFFFFFFFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1070693\n"); - end - ReadData1E = 64'h002FFFFFFFFFF006; - ReadData2E = 64'hFFF8A6F40A830B75; - ReadData3E = 64'hC01FFFFFFFFFFFFE; - ans = 64'hFFF8A6F40A830B75; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1070999\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; + ReadData1E = 64'h403FBFFFFBFFFFFF; ReadData2E = 64'h4010000000000000; - ReadData3E = 64'h3FF0000000000000; - ans = 64'h4007FFFFFFFFFFFF; + ReadData3E = 64'h3BFFFA42C5E82F30; + ans = 64'h405FBFFFFBFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136597,51 +41709,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1071305\n"); - end - ReadData1E = 64'hC03000100FFFFFFF; - ReadData2E = 64'h381FFFC00000003F; - ReadData3E = 64'hBCA0200000004000; - ans = 64'hBCA0200000004000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1071611\n"); + $fwrite(fp,"1069067\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h710FF1FFFFFFFFFE; - ReadData3E = 64'h0000000000000000; - ans = 64'h70FFF1FFFFFFFFFC; + ReadData2E = 64'h403FFEF7FFFFFFFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h402DFEF7FFFFFFFD; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136675,12 +41748,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1071917\n"); + $fwrite(fp,"1070068\n"); end - ReadData1E = 64'h47F0FFF7FFFFFFFE; - ReadData2E = 64'h4010000000000001; - ReadData3E = 64'hB7E0000000000060; - ans = 64'h4810FFF7FFFFFFFF; + ReadData1E = 64'h3FE7D05E97AE4140; + ReadData2E = 64'h001FFFFCFFFFFFFF; + ReadData3E = 64'h443E000000003FFF; + ans = 64'h443E000000003FFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136714,12 +41787,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1072223\n"); + $fwrite(fp,"1071069\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC3D0000001FFDFFF; - ReadData3E = 64'h400FFBFFFF7FFFFF; - ans = 64'hC3C0000001FFDFFE; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4330000000000001; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136753,12 +41826,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1072529\n"); + $fwrite(fp,"1072070\n"); end - ReadData1E = 64'hC4B53D377B80B5C0; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'hC4E53D377B80B5BF; + ReadData1E = 64'hBFB0000007BFFFFF; + ReadData2E = 64'hC1C0000020000020; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h4180000027C0002F; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136792,51 +41865,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1072835\n"); - end - ReadData1E = 64'hBFAB3C37F3B44C72; - ReadData2E = 64'h3801000004000000; - ReadData3E = 64'hC00FFFFF6FFFFFFE; - ans = 64'hC00FFFFF6FFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1073141\n"); + $fwrite(fp,"1073071\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h401FFFFFFFFFFFFF; - ReadData3E = 64'hBE3F0000000FFFFF; - ans = 64'h400FFFFFFF07FFFD; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h57C913F404B1BF35; + ans = 64'h57C913F404B1BF35; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136870,12 +41904,51 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1073447\n"); + $fwrite(fp,"1074072\n"); end - ReadData1E = 64'hC39FFFFFFBFFFDFF; - ReadData2E = 64'h4770000002080000; + ReadData1E = 64'hABEFBDFFFFFFFFFF; + ReadData2E = 64'hBFFFEF0000000000; + ReadData3E = 64'h79F000000000040E; + ans = 64'h79F000000000040E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1075073\n"); + end + ReadData1E = 64'h3FB7953C9D76B629; + ReadData2E = 64'h7FE0000000000001; ReadData3E = 64'h4010000000000000; - ans = 64'hCB2000000007FEFF; + ans = 64'h7FA7953C9D76B62A; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136909,12 +41982,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1073753\n"); + $fwrite(fp,"1076074\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h401FFFFFFFFFFFFE; - ReadData3E = 64'hBFE0000000000001; - ans = 64'h400BFFFFFFFFFFFC; + ReadData2E = 64'hBF0D94F6AB9A8EF4; + ReadData3E = 64'hC3E00040000FFFFF; + ans = 64'hC3E00040000FFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136948,12 +42021,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1074059\n"); + $fwrite(fp,"1077075\n"); end - ReadData1E = 64'h419000001FFFFEFF; - ReadData2E = 64'h471FFC95BD9A3D25; - ReadData3E = 64'h37EF600000000000; - ans = 64'h48BFFC95FD93669E; + ReadData1E = 64'hC3D6EB6DEDE43198; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h3A6008000000000F; + ans = 64'hFFF0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -136987,10 +42060,361 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1074365\n"); + $fwrite(fp,"1078076\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hBFD000009FFFFFFF; + ReadData2E = 64'hC01FFC000000FFFF; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hC00FFC000000FFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1079077\n"); + end + ReadData1E = 64'hBAC00000020FFFFF; + ReadData2E = 64'hCBBFEC74D71247C5; + ReadData3E = 64'h3F2FFF8000100000; + ans = 64'h468FEC74DB2FC2D3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1080078\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFE; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1081079\n"); + end + ReadData1E = 64'hC030000000000300; + ReadData2E = 64'hC3EC95B2EE055F08; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h442C9532EE056464; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1082080\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'h403FFFFC00002000; + ans = 64'h403FFFFC00002000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1083081\n"); + end + ReadData1E = 64'h4030007FFFFBFFFF; + ReadData2E = 64'hC020001F80000000; + ReadData3E = 64'hBCE00000007FFFFC; + ans = 64'hC060009F80F7FFF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1084082\n"); + end + ReadData1E = 64'h43D03FFFFFFBFFFE; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1085083\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFE; + ReadData2E = 64'h47FFF000000007FF; + ReadData3E = 64'h5080100800000000; + ans = 64'h5080100800000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1086084\n"); + end + ReadData1E = 64'hBFDFFFFFDFFFFF7F; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'hB80FFDFFFFFFFEFF; + ans = 64'hB80FFDFFFFFFFEFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1087085\n"); + end + ReadData1E = 64'h3FDFFFFFFFFFFFFE; + ReadData2E = 64'h400EC2EC00B1D29B; ReadData3E = 64'h7FF0000000000001; ans = 64'h7FF8000000000001; FrmE = 3'b000; @@ -137026,12 +42450,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1074671\n"); + $fwrite(fp,"1088086\n"); end - ReadData1E = 64'h47EFE1FFFFFFFFFE; - ReadData2E = 64'h4340000000000000; - ReadData3E = 64'hC00FFFFFFF03FFFE; - ans = 64'h4B3FE1FFFFFFFFFE; + ReadData1E = 64'h3FCFFFFFF0000003; + ReadData2E = 64'h0010000000210000; + ReadData3E = 64'hBFF00000001007FE; + ans = 64'hBFF00000001007FE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -137065,2157 +42489,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1074977\n"); + $fwrite(fp,"1089087\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hB77565980E71074C; - ReadData3E = 64'hC07AEC57F394DD51; - ans = 64'hC07AEC57F394DD51; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1075283\n"); - end - ReadData1E = 64'h3FB7EA8EA0DB9F94; - ReadData2E = 64'h4340000000000001; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'h4307EA8EA0DB9F95; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1075589\n"); - end - ReadData1E = 64'h400FFFFFFE007FFE; - ReadData2E = 64'h711400000FFFFFFF; - ReadData3E = 64'h43E57BE412E34D74; - ans = 64'h713400000EC04FFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1075895\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h434FFFFFFFFFFFFF; - ReadData3E = 64'hC1CEFFFEFFFFFFFF; - ans = 64'h433FFFFFC20001FD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1076201\n"); - end - ReadData1E = 64'h3FFFFFFFFFFFBFFC; - ReadData2E = 64'hC3C60616C794210B; - ReadData3E = 64'hC000000000000001; - ans = 64'hC3D60616C793F4FC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1076507\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h434FFFFFFFFFFFFE; - ReadData3E = 64'h3FDFFFFFFFFFFFFF; - ans = 64'h433FFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1076813\n"); - end - ReadData1E = 64'hC1EDFFFFF7FFFFFE; - ReadData2E = 64'h540FFFFFFC003FFF; - ReadData3E = 64'h3E5FEFFBFFFFFFFF; - ans = 64'hD60DFFFFF4403BFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1077119\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC9700003FFDFFFFF; - ReadData3E = 64'hFFEFFFFFFFFFFFFF; - ans = 64'hFFEFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1077425\n"); - end - ReadData1E = 64'h3FBFFFFFFFFFF01F; - ReadData2E = 64'h7FE0000000000000; - ReadData3E = 64'hC026694A871241A8; - ans = 64'h7FAFFFFFFFFFF01F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1077731\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3FCBFFFFBFFFFFFF; - ReadData3E = 64'h40AFF7FFFEFFFFFF; - ans = 64'h40AFF837FEFF7FFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1078037\n"); - end - ReadData1E = 64'hC00FFFFFFEE00000; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'h3CA0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1078343\n"); - end - ReadData1E = 64'h3FB0000001EFFFFE; - ReadData2E = 64'h80100000007FFFFE; - ReadData3E = 64'h41E0FF7FFFFFFFFE; - ans = 64'h41E0FF7FFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1078649\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h7FE0000000000001; - ReadData3E = 64'h41D007FFFFDFFFFF; - ans = 64'h7FD0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1078955\n"); - end - ReadData1E = 64'h17C00000000800FE; - ReadData2E = 64'h3FEFFFFFFFFFFE00; - ReadData3E = 64'h3FFFFFFFFFFFFFFF; - ans = 64'h3FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1079261\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h7FEFFFFFFFFFFFFF; - ReadData3E = 64'hBCAFFFFFFFFFFFFE; - ans = 64'h7FDFFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1079567\n"); - end - ReadData1E = 64'h43CF7FFFFFFF8000; - ReadData2E = 64'hBFBB9EDE467471F8; - ReadData3E = 64'h4893FFFFFFFFFFFF; - ans = 64'h4893FFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1079873\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h43C2B9FEFACE0877; - ReadData3E = 64'h434FFFFFFFFFFFFE; - ans = 64'h43B2F9FEFACE0876; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1080179\n"); - end - ReadData1E = 64'h43EDD3E4302B9937; - ReadData2E = 64'h7FEFFFFFFFFFFFFE; - ReadData3E = 64'hB7E8380CF656C23A; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1080485\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hBCA7BFFFFFFFFFFF; - ReadData3E = 64'h399FFFF7FFFFF7FF; - ans = 64'hBC97BFFFFFFFFFDE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1080791\n"); - end - ReadData1E = 64'hBFCFFFFFFFF00000; - ReadData2E = 64'h7FF0000000000000; - ReadData3E = 64'h8010000000000001; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1081097\n"); - end - ReadData1E = 64'hBF872FE583CF2298; - ReadData2E = 64'h3CA2BBA100BAE285; - ReadData3E = 64'hC35FF7FFFFFEFFFE; - ans = 64'hC35FF7FFFFFEFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1081403\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h7FF0000000000001; - ReadData3E = 64'h429B13F3D64F1831; - ans = 64'h7FF8000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1081709\n"); - end - ReadData1E = 64'hBFB00001003FFFFE; - ReadData2E = 64'h41CFFFE000000001; - ReadData3E = 64'hBFEFFFFFFFFFFFFE; - ans = 64'hC18FFFE2087DFF7D; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1082015\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h7FFFFFFFFFFFFFFF; - ReadData3E = 64'h3CA0000000000000; - ans = 64'h7FFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1082321\n"); - end - ReadData1E = 64'h200DA806045D23E7; - ReadData2E = 64'hBFDFFE0010000000; - ReadData3E = 64'hC1500001BFFFFFFF; - ans = 64'hC1500001BFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1082627\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3FD03FFFFFFFFFFF; - ReadData3E = 64'hC340000000000000; - ans = 64'hC340000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1082933\n"); - end - ReadData1E = 64'h3800000008003FFF; - ReadData2E = 64'h7FFFFFFFFFFFFFFE; - ReadData3E = 64'h41D00008000001FF; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1083239\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h37E000000007BFFE; - ReadData3E = 64'h3CAFF00003FFFFFF; - ans = 64'h3CAFF00003FFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1083545\n"); - end - ReadData1E = 64'hBEAF80000000001E; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h000FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1083851\n"); - end - ReadData1E = 64'h3805456CE15D5053; - ReadData2E = 64'h5E8000020001FFFF; - ReadData3E = 64'h7470000000FFEFFF; - ans = 64'h7470000000FFEFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1084157\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h8000000000000000; - ReadData3E = 64'h40300000002003FF; - ans = 64'h40300000002003FF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1084463\n"); - end - ReadData1E = 64'hABEBA5B21AB91F03; - ReadData2E = 64'hC3A8E57EF02FF6AE; - ReadData3E = 64'h3FE0000000000000; - ans = 64'h3FE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1084769\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h8000000000000001; - ReadData3E = 64'h8010000000000001; - ans = 64'h8010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1085075\n"); - end - ReadData1E = 64'h7FF1C68B26BDE7D1; - ReadData2E = 64'hC80FBFFFFFFFF7FF; - ReadData3E = 64'h3E2040000000FFFF; - ans = 64'h7FF9C68B26BDE7D1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1085381\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hB7FF800000000FFE; - ReadData3E = 64'h4010000000000001; - ans = 64'h4010000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1085687\n"); - end - ReadData1E = 64'hC00FC577FE8BADBD; - ReadData2E = 64'h800FFFFFFFFFFFFF; - ReadData3E = 64'hBF10000080007FFE; - ans = 64'hBF10000080007FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1085993\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC7F8000000000007; - ReadData3E = 64'h41E1CD72352B6440; - ans = 64'hC7E8000000000005; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1086299\n"); - end - ReadData1E = 64'h4030000000000FFF; - ReadData2E = 64'h800FFFFFFFFFFFFE; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1086605\n"); - end - ReadData1E = 64'hC03FFFF80FFFFFFF; - ReadData2E = 64'hFFD122B8091B2689; - ReadData3E = 64'h2220000000000210; - ans = 64'h7FF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1086911\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h8010000000000000; - ReadData3E = 64'hC1ED21FF51F1AB58; - ans = 64'hC1ED21FF51F1AB58; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1087217\n"); - end - ReadData1E = 64'hC34FFFFF80000007; - ReadData2E = 64'h3FCA54333558DA5E; - ReadData3E = 64'hBFD0000000000001; - ans = 64'hC32A5432CC080D8F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1087523\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h8010000000000001; - ReadData3E = 64'h000FFFFFFFFFFFFF; - ans = 64'h0007FFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1087829\n"); - end - ReadData1E = 64'hC07DFFFF7FFFFFFF; - ReadData2E = 64'h40DFFF8000003FFE; - ReadData3E = 64'hC3E40B9AC28BB34B; - ans = 64'hC3E40B9AC28BD14B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1088135\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hE869B71D58044CB4; - ReadData3E = 64'hC00FFFFFFFFFFFFF; - ans = 64'hE859B71D58044CB2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1088441\n"); - end - ReadData1E = 64'hC01FFFFFFEDFFFFF; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'h452192C043B9A0C1; - ans = 64'h452192C043B9A0C1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1088747\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h430800FFFFFFFFFF; - ReadData3E = 64'hBFFFFF7FFFFFFBFF; - ans = 64'h42F800FFFFFFFFDE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1089053\n"); - end - ReadData1E = 64'h7D3FF0007FFFFFFF; - ReadData2E = 64'h801FFFFFFFFFFFFF; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1089359\n"); - end - ReadData1E = 64'h2A4200003FFFFFFF; - ReadData2E = 64'hC01FFFBFFBFFFFFF; - ReadData3E = 64'h48B000000000BFFF; - ans = 64'h48B000000000BFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1089665\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h801FFFFFFFFFFFFE; - ReadData3E = 64'hC03FFFDFFFFFFFDE; - ans = 64'hC03FFFDFFFFFFFDE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1089971\n"); - end - ReadData1E = 64'h88FFFFFFFF5FFFFF; - ReadData2E = 64'hA454024CF36DECDB; - ReadData3E = 64'h3CAFFFFFFFFFFFFF; - ans = 64'h3CAFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1090277\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hBCA0000000000000; - ReadData3E = 64'h7FFFFFFFFFFFFFFE; - ans = 64'h7FFFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1090583\n"); - end - ReadData1E = 64'h3F4FFFFFFBFFFFFF; - ReadData2E = 64'hBFCF7FFFFFFF8000; - ReadData3E = 64'hC01FDFFFFFFFFFFF; - ans = 64'hC01FE03EFFFFF81E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1090889\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC80040000007FFFE; - ReadData3E = 64'h3FFFFFFFFFFFFFFE; - ans = 64'hC7F040000007FFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1091195\n"); - end - ReadData1E = 64'hBFBB61DA36F5D5A6; - ReadData2E = 64'hBCA0000000000001; - ReadData3E = 64'h3FE0007FFFFBFFFE; - ans = 64'h3FE0007FFFFBFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1091501\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC7EFFFFFFFE0007E; - ReadData3E = 64'hFFF000001FFF7FFE; - ans = 64'hFFF800001FFF7FFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1091807\n"); - end - ReadData1E = 64'hB7F893A187691B38; ReadData2E = 64'hBCAFFFFFFFFFFFFF; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -139249,12 +42528,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1092113\n"); + $fwrite(fp,"1090088\n"); end - ReadData1E = 64'h37F004003FFFFFFE; - ReadData2E = 64'h21A00008000007FF; - ReadData3E = 64'hB7EFFFF800007FFE; - ans = 64'hB7EFFFF800007FFE; + ReadData1E = 64'hC3F3C6AC47CC517B; + ReadData2E = 64'hC6A0000000000401; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4AA3C6AC47CC566E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -139288,207 +42567,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1092419\n"); + $fwrite(fp,"1091089\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'h47E059952FFAECBD; - ans = 64'h47E059952FFAECBD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1092725\n"); - end - ReadData1E = 64'hBFB000001003FFFE; - ReadData2E = 64'h41D800000007FFFF; - ReadData3E = 64'h801FFFFFFFFFFFFE; - ans = 64'hC1980000180DFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1093031\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hBCAFFFFFFFFFFFFE; - ReadData3E = 64'hFFF0000000000000; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1093337\n"); - end - ReadData1E = 64'h95BFFEFFFFFEFFFF; - ReadData2E = 64'h41E0000000000300; - ReadData3E = 64'h402FFFFFBFFFFFBE; - ans = 64'h402FFFFFBFFFFFBE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1093643\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC89FE00000000003; - ReadData3E = 64'hBFF0000000000000; - ans = 64'hC88FE00000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1093949\n"); - end - ReadData1E = 64'h498FFFFFFFFFBFFE; ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'hC1E0100000002000; - ans = 64'hC96FFFFFFFFFC000; + ReadData3E = 64'h87187AFF1B46C414; + ans = 64'hBFC0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -139522,12 +42606,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1094255\n"); + $fwrite(fp,"1092090\n"); end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h556E8DC5F6D2D345; - ReadData3E = 64'hC340B053BA11A120; - ans = 64'h555E8DC5F6D2D343; + ReadData1E = 64'h3FCFFFFFE0003FFF; + ReadData2E = 64'h00011A16C1088D0A; + ReadData3E = 64'hC3D0000000047FFE; + ans = 64'hC3D0000000047FFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -139561,285 +42645,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1094561\n"); + $fwrite(fp,"1093091\n"); end - ReadData1E = 64'hC3CFFFFFFFFFDFDF; - ReadData2E = 64'hBFD0000000000001; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'h43AF7FFFFFFFDFE1; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1094867\n"); - end - ReadData1E = 64'h404EFFF7FFFFFFFE; - ReadData2E = 64'hFFDFFFFFEFFFFBFE; - ReadData3E = 64'h36201FFDFFFFFFFE; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1095173\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hBFDFFFFFFFFFFFFF; - ReadData3E = 64'hBF81687F93BD4C1C; - ans = 64'hBFD08B43FC9DEA5F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1095479\n"); - end - ReadData1E = 64'h3FEBFFFFFFFFFF80; - ReadData2E = 64'h380F7FFFFFDFFFFF; - ReadData3E = 64'h0010000000000000; - ans = 64'h380B8FFFFFE3FF81; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1095785\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hBFDFFFFFFFFFFFFE; - ReadData3E = 64'h7FE0000000000001; - ans = 64'h7FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1096091\n"); - end - ReadData1E = 64'h434ACAA091937E4F; - ReadData2E = 64'h41E7FDFFFFFFFFFF; - ReadData3E = 64'h40E5EEF38E6512EB; - ans = 64'h4544164BC3258583; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1096397\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h001CE5742BF6BCA4; - ReadData3E = 64'h3FE0000000000001; - ans = 64'h3FE0000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1096703\n"); - end - ReadData1E = 64'h3E800010000001FF; + ReadData1E = 64'h4804282A5B7545D5; ReadData2E = 64'hBFE0000000000000; - ReadData3E = 64'hBFE63277397ECFAD; - ans = 64'hBFE63277597EEFAD; + ReadData3E = 64'h0010000000000000; + ans = 64'hC7F4282A5B7545D5; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -139873,12 +42684,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1097009\n"); + $fwrite(fp,"1094092\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC03037FFFFFFFFFF; - ReadData3E = 64'hC27087FFFFFFFFFE; - ans = 64'hC2708800000081BE; + ReadData2E = 64'h3F5FBFFFFFFFFFEF; + ReadData3E = 64'h65D32C484940DBCE; + ans = 64'h65D32C484940DBCE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -139912,90 +42723,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1097315\n"); + $fwrite(fp,"1095093\n"); end - ReadData1E = 64'h401EFEFFFFFFFFFF; - ReadData2E = 64'hBFE0000000000001; - ReadData3E = 64'h401FFFFFFFFFFFFE; - ans = 64'h4010807FFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1097621\n"); - end - ReadData1E = 64'hB7E5E9AED5C5CD08; - ReadData2E = 64'h40100010000000FF; - ReadData3E = 64'h00077CD5AB42C193; - ans = 64'hB805E9C4BF74A42B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1097927\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; + ReadData1E = 64'h3FA0000002010000; ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'h801FFFE7FFFFFFFE; - ans = 64'hBFDFFFFFFFFFFFFD; + ReadData3E = 64'hE81FFFFFFFFFF00F; + ans = 64'hE81FFFFFFFFFF00F; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -140029,51 +42762,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1098233\n"); - end - ReadData1E = 64'hBFCC7D5BA9493FB9; - ReadData2E = 64'h33679E2657415F04; - ReadData3E = 64'h8000000000000001; - ans = 64'hB34506E6F8CC5CED; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1098539\n"); + $fwrite(fp,"1096094\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hBFEFFFFFFFFFFFFF; - ReadData3E = 64'hC34FFFFFFFFFFFFF; - ans = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'hFCCFFFFFFFFF003F; + ReadData3E = 64'hC010000000000001; + ans = 64'hFCBFFFFFFFFF003D; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -140107,12 +42801,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1098845\n"); + $fwrite(fp,"1097095\n"); end - ReadData1E = 64'h3800000000000010; - ReadData2E = 64'hC1FFFE00001FFFFE; - ReadData3E = 64'hD6EFFFFFFFFFFFEB; - ans = 64'hD6EFFFFFFFFFFFEB; + ReadData1E = 64'h37EFFFC000FFFFFF; + ReadData2E = 64'hB3BFFFC0000001FE; + ReadData3E = 64'hC1D007FFFFFFFF00; + ans = 64'hC1D007FFFFFFFF00; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -140146,280 +42840,7 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1099151\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC66302F95CD69379; - ReadData3E = 64'hBFDFFFFFFFFFFFFF; - ans = 64'hC65302F95CD69378; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1099457\n"); - end - ReadData1E = 64'hB7FFFFFFFFFFFC3E; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'hE1507FFF7FFFFFFF; - ans = 64'hE1507FFF7FFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1099763\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hA2FE0000000000FF; - ReadData3E = 64'h3801FFFFFFFFFFFF; - ans = 64'h3801FFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1100069\n"); - end - ReadData1E = 64'hC77BC12E7CB1723C; - ReadData2E = 64'hBFF0000000000000; - ReadData3E = 64'hC010000000000000; - ans = 64'h477BC12E7CB1723C; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1100375\n"); - end - ReadData1E = 64'hBCE000000001FC00; - ReadData2E = 64'h3FF80CABB0668B82; - ReadData3E = 64'hB9FFFFFFFCFFFFFF; - ans = 64'hBCE80CABB0698754; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1100681\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hBFF0000000000001; - ReadData3E = 64'h3FBFFFFFFFFFFF83; - ans = 64'hBFD800000000001F; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1100987\n"); - end - ReadData1E = 64'hBD8184351B39575C; - ReadData2E = 64'hA0AFFFFBFFFFFFF8; - ReadData3E = 64'hFFFFFFFFFFFFFFFF; - ans = 64'hFFFFFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1101293\n"); + $fwrite(fp,"1098096\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; ReadData2E = 64'hBFFFFFFFFFFFFFFF; @@ -140458,12 +42879,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1101599\n"); + $fwrite(fp,"1099097\n"); end - ReadData1E = 64'h3F9FFFDFFEFFFFFE; - ReadData2E = 64'hB7E00007EFFFFFFF; - ReadData3E = 64'hC1EFFFFFFFDFF000; - ans = 64'hC1EFFFFFFFDFF000; + ReadData1E = 64'hBD300000401FFFFE; + ReadData2E = 64'hC81FFEFFEFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h455FFF00703BFDBA; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -140497,129 +42918,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1101905\n"); + $fwrite(fp,"1100098\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h301FFDFFFDFFFFFE; - ReadData3E = 64'h3CAFFFFFFFFFFFFE; - ans = 64'h3CAFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1102211\n"); - end - ReadData1E = 64'hC06FD8A0BAEFFBA0; - ReadData2E = 64'hBFFFFFFFFFFFFFFE; - ReadData3E = 64'h4000020000000200; - ans = 64'h407FF8A4BAEFFBA2; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1102517\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h32F0007FFFFEFFFF; - ReadData3E = 64'hBD81FFFFFF7FFFFF; - ans = 64'hBD81FFFFFF7FFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1102823\n"); - end - ReadData1E = 64'h691FFFDFF0000000; ReadData2E = 64'hC000000000000000; - ReadData3E = 64'h4000000000000001; - ans = 64'hE92FFFDFF0000000; + ReadData3E = 64'hB2AFBFF7FFFFFFFF; + ans = 64'hBFEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -140653,12 +42957,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1103129\n"); + $fwrite(fp,"1101099\n"); end - ReadData1E = 64'h7FF000004FFFFFFE; - ReadData2E = 64'hC039E997F6D37059; - ReadData3E = 64'h331C0003FFFFFFFE; - ans = 64'h7FF800004FFFFFFE; + ReadData1E = 64'hBF9BFFFFFFFEFFFF; + ReadData2E = 64'h3D9FEFFFFFFFFC00; + ReadData3E = 64'hBF2DFAB538B099B1; + ans = 64'hBF2DFAB5392061B1; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -140692,285 +42996,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1103435\n"); + $fwrite(fp,"1102100\n"); end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'h3E9000100FFFFFFF; - ans = 64'hBFEFFFFF7FFF7F80; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1103741\n"); - end - ReadData1E = 64'hB7E9521D61269217; - ReadData2E = 64'h3FCFFFFFBFFFBFFF; - ReadData3E = 64'h7FEFFFFFFFFFFFFE; - ans = 64'h7FEFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1104047\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC000000000000001; - ReadData3E = 64'hC010000000000000; - ans = 64'hC014000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1104353\n"); - end - ReadData1E = 64'hCD1F485CE2E7C107; - ReadData2E = 64'hC00F000003FFFFFF; - ReadData3E = 64'hBF7407FFFFFFFFFE; - ans = 64'h4D3E4E19FFB98E9A; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1104659\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hBF04000000007FFF; - ReadData3E = 64'hBCA0000000000000; - ans = 64'hBEF400000000FFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1104965\n"); - end - ReadData1E = 64'h3FC000003FFFFBFF; - ReadData2E = 64'hC00FFFFFFFFFFFFF; - ReadData3E = 64'h001000001FFFFFFE; - ans = 64'hBFE000003FFFFBFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1105271\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hCC0F7F226DFC3A30; - ReadData3E = 64'h3810800000000080; - ans = 64'hCBFF7F226DFC3A2E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1105577\n"); - end - ReadData1E = 64'h4011FFFFFF800000; + ReadData1E = 64'hBF3FFFE080000000; ReadData2E = 64'hC00FFFFFFFFFFFFE; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; - ans = 64'hC033FFFFFF7FFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -141004,51 +43035,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1105883\n"); - end - ReadData1E = 64'h0120000000020080; - ReadData2E = 64'hC02FFBFFBFFFFFFF; - ReadData3E = 64'hBFE7FFFFFFFEFFFF; - ans = 64'hBFE7FFFFFFFEFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1106189\n"); + $fwrite(fp,"1103101\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC010000000000000; - ReadData3E = 64'h3FDFFC0000007FFF; - ans = 64'hBFF800FFFFFFDFFE; + ReadData2E = 64'h7FEFFF0000000002; + ReadData3E = 64'h43E0FE51A628A40E; + ans = 64'h7FDFFF0000000000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -141082,51 +43074,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1106495\n"); + $fwrite(fp,"1104102\n"); end - ReadData1E = 64'hC7E000000401FFFF; - ReadData2E = 64'h3FD000000200001E; - ReadData3E = 64'hFFE0000000000000; - ans = 64'hFFE0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1106801\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; + ReadData1E = 64'h3FF000002000007F; ReadData2E = 64'hC010000000000001; - ReadData3E = 64'h4000000000000001; - ans = 64'h3CC0000000000001; + ReadData3E = 64'hC088000007FFFFFF; + ans = 64'hC088200008400000; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -141160,51 +43113,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1107107\n"); - end - ReadData1E = 64'hC07400000000000F; - ReadData2E = 64'hC22F7EFFFFFFFFFF; - ReadData3E = 64'h402E0FDFBF9D095F; - ans = 64'h42B3AF6000000F16; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1107413\n"); + $fwrite(fp,"1105103\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h41C0020000040000; - ReadData3E = 64'h0010000000000001; - ans = 64'h41B002000003FFFF; + ReadData2E = 64'hC09FEFFFBFFFFFFF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hC08FEBFFBFFFFFFD; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -141238,12 +43152,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1107719\n"); + $fwrite(fp,"1106104\n"); end - ReadData1E = 64'hAD8FFFFFFFF80007; - ReadData2E = 64'hC01FFFFFFFFFFFFF; - ReadData3E = 64'h42960AE5D04FDC6B; - ans = 64'h42960AE5D04FDC6B; + ReadData1E = 64'h43EFF7FFFF7FFFFE; + ReadData2E = 64'h3FCFFFFFC1FFFFFF; + ReadData3E = 64'h4230800000000000; + ans = 64'h43CFF7FFC9CF7FFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -141277,206 +43191,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1108025\n"); + $fwrite(fp,"1107105\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC0251BE94A80FD14; - ReadData3E = 64'hBFEFFFFFFFDFFFC0; - ans = 64'hC0191BE94A7CFD0B; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1108331\n"); - end - ReadData1E = 64'hBE700000081FFFFE; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'h3FF0000080000040; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1108637\n"); - end - ReadData1E = 64'h001FFE0000001FFF; - ReadData2E = 64'h3F40B59FC2D8D6D9; - ReadData3E = 64'hD4800001FFFFFFFE; - ans = 64'hD4800001FFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1108943\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC01FFFFFFFFFFFFE; - ReadData3E = 64'h43EFFC000000FFFF; - ans = 64'h43EFFC000000FFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1109249\n"); - end - ReadData1E = 64'h3F50004000001FFF; - ReadData2E = 64'h4040000003FBFFFF; - ReadData3E = 64'h4340000000000001; - ans = 64'h4340000000000001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1109555\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC340000000000000; - ReadData3E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; ans = 64'hC330000000000001; FrmE = 3'b000; #10 @@ -141511,400 +43230,10 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1109861\n"); + $fwrite(fp,"1108106\n"); end - ReadData1E = 64'hC9A000000FFFFFC0; - ReadData2E = 64'h401FC0000000001F; - ReadData3E = 64'h41E62D1014622F6F; - ans = 64'hC9CFC0001FBFFFA0; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1110167\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC08000000004003F; - ReadData3E = 64'h800FFFFFFFFFFFFF; - ans = 64'hC07000000004003E; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1110473\n"); - end - ReadData1E = 64'hC7E00020000007FF; - ReadData2E = 64'hC340000000000001; - ReadData3E = 64'h3D8081FFFFFFFFFF; - ans = 64'h4B30002000000800; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1110779\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3096C2873C3B7AB7; - ReadData3E = 64'h3CCFFFFDFFFFBFFF; - ans = 64'h3CCFFFFDFFFFBFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1111085\n"); - end - ReadData1E = 64'h403FFFFEFFFFFFFB; - ReadData2E = 64'hC34FFFFFFFFFFFFF; - ReadData3E = 64'hBFE0000000000000; - ans = 64'hC39FFFFEFFFFFFFA; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1111391\n"); - end - ReadData1E = 64'hC1F2000FFFFFFFFF; - ReadData2E = 64'h4F3003FFFFFEFFFE; - ReadData3E = 64'h4BDFFFFFFF8001FE; - ans = 64'hD132049003FEDFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1111697\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hC34FFFFFFFFFFFFE; - ReadData3E = 64'hB8101000003FFFFF; - ans = 64'hC33FFFFFFFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1112003\n"); - end - ReadData1E = 64'h3FF719E56C2EBF0F; - ReadData2E = 64'hB802BAD5445737FA; - ReadData3E = 64'hC01FFFFFFFFFFFFF; - ans = 64'hC01FFFFFFFFFFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1112309\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hFFE0000000000000; - ReadData3E = 64'h3FEFFFFFFFFFFFFE; - ans = 64'hFFCFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1112615\n"); - end - ReadData1E = 64'h37FF9FFFFFFFFFFF; - ReadData2E = 64'hC85FFFFFFFFFF07E; - ReadData3E = 64'h40010000000FFFFF; - ans = 64'hC06F5BFFFFFFB0AC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1112921\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hBFFFFFF8000003FE; + ReadData1E = 64'h3FB0010000FFFFFF; + ReadData2E = 64'h293FFFFF7FFFF7FE; ReadData3E = 64'hFFFFFFFFFFFFFFFE; ans = 64'hFFFFFFFFFFFFFFFE; FrmE = 3'b000; @@ -141940,51 +43269,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1113227\n"); - end - ReadData1E = 64'hBFCEFFFFFFFFEFFF; - ReadData2E = 64'hFFE0000000000001; - ReadData3E = 64'hC030000000001200; - ans = 64'h7FBEFFFFFFFFF001; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1113533\n"); + $fwrite(fp,"1109107\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hFFDFFFDFFFFFFFFE; - ReadData3E = 64'hBFD0100007FFFFFF; - ans = 64'hFFCFFFDFFFFFFFFC; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h88BFFFFFFFFFFFC2; + ans = 64'hFFCFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -142018,245 +43308,50 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1113839\n"); + $fwrite(fp,"1110108\n"); end - ReadData1E = 64'h401000000007FBFE; + ReadData1E = 64'hBFCDFBFFFFFFFFFF; + ReadData2E = 64'hBF8FFFF00000001F; + ReadData3E = 64'h4074A3B601D6E925; + ans = 64'h4074A3C4FFCF6A25; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1111109\n"); + end + ReadData1E = 64'hC1EFADB853BA4CB8; ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'h3FD0000000000001; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1114145\n"); - end - ReadData1E = 64'hC1CAE55EE9B7731D; - ReadData2E = 64'hC1DBFFFFFFFFFFFE; - ReadData3E = 64'hC1E05FFFFFFFFFFE; - ans = 64'h43B788B30BFD84B8; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1114451\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hFFEFFFFFFFFFFFFF; - ReadData3E = 64'h34FFFFFEFFFF0000; - ans = 64'hFFDFFFFFFFFFFFFD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1114757\n"); - end - ReadData1E = 64'h3FBFFBFFFFFFFFFE; - ReadData2E = 64'hFFEFFFFBFFBFFFFF; - ReadData3E = 64'h400FFFFFFFFFFFFE; - ans = 64'hFFBFFBFC004007FD; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1115063\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hFFEFFFFFFFFFFFFE; - ReadData3E = 64'hBFE0000000000000; - ans = 64'hFFDFFFFFFFFFFFFC; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1115369\n"); - end - ReadData1E = 64'h002007FFFFFBFFFF; - ReadData2E = 64'hBFC926A50C7B04BB; - ReadData3E = 64'h3DCFFFFFFFFFFFFE; - ans = 64'h3DCFFFFFFFFFFFFE; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1115675\n"); - end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hB707FFFFFFEFFFFF; - ReadData3E = 64'h7FF0000000000000; + ReadData3E = 64'hC000000000000000; ans = 64'h7FF0000000000000; FrmE = 3'b000; #10 @@ -142291,51 +43386,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1115981\n"); - end - ReadData1E = 64'h381000007F000000; - ReadData2E = 64'hFFF0000000000000; - ReadData3E = 64'h7FDFFFFF00000020; - ans = 64'hFFF0000000000000; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1116287\n"); + $fwrite(fp,"1112110\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3CAFFDFFFFFFFF00; - ReadData3E = 64'h39CFDFFFFDFFFFFE; - ans = 64'h3C9FFDFFFFFFFFFD; + ReadData2E = 64'h3FB2B80A77DAC3B8; + ReadData3E = 64'h43FFFFE1FFFFFFFF; + ans = 64'h43FFFFE1FFFFFFFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -142369,11 +43425,11 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1116593\n"); + $fwrite(fp,"1113111\n"); end - ReadData1E = 64'h3FFFFFFFFFFFF7EE; + ReadData1E = 64'hBF9FFFFFFFFFFF3E; ReadData2E = 64'hFFF0000000000001; - ReadData3E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'hC0500001FDFFFFFF; ans = 64'hFFF8000000000001; FrmE = 3'b000; #10 @@ -142408,51 +43464,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1116899\n"); - end - ReadData1E = 64'h41503FFFFFFFEFFE; - ReadData2E = 64'hB67FFFF7FDFFFFFF; - ReadData3E = 64'hBFD7FFFFFFFEFFFF; - ans = 64'hBFD7FFFFFFFEFFFF; - FrmE = 3'b000; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; - xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; - ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; - znan = &ReadData3E[62:52] && |ReadData3E[51:0]; - ansnan = &ans[62:52] && |ans[51:0]; - xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; - ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; - if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); - $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); - if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); - if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); - if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); - if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); - if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1117205\n"); + $fwrite(fp,"1114112\n"); end ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hFFFFFFFFFFFFFFFF; - ReadData3E = 64'h366FFE0000000007; - ans = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hB99461AC8146074F; + ReadData3E = 64'h8010000000000001; + ans = 64'hB98461AC8146074E; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -142486,12 +43503,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1117511\n"); + $fwrite(fp,"1115113\n"); end - ReadData1E = 64'hB7F0001FFFDFFFFF; - ReadData2E = 64'hBF5FFFFFF07FFFFF; - ReadData3E = 64'hC000000000000000; - ans = 64'hC000000000000000; + ReadData1E = 64'h434FFFFF00000007; + ReadData2E = 64'h41F0400001000000; + ReadData3E = 64'h41E0010000040000; + ans = 64'h45503FFF7EFFFFFC; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -142525,12 +43542,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1117817\n"); + $fwrite(fp,"1116114\n"); end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'hFFFFFFFFFFFFFFFE; - ReadData3E = 64'h3FD0000000000001; - ans = 64'hFFFFFFFFFFFFFFFE; + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h001FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -142564,12 +43581,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1118123\n"); + $fwrite(fp,"1117115\n"); end - ReadData1E = 64'h47E0000000003EFE; - ReadData2E = 64'hB72000013FFFFFFF; - ReadData3E = 64'h403FFFFEFFFFF7FE; - ans = 64'h403FFFFAFFFFA7FE; + ReadData1E = 64'h40501001FFFFFFFF; + ReadData2E = 64'hB4D01FFDFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -142603,10 +43620,205 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1118429\n"); + $fwrite(fp,"1118116\n"); end - ReadData1E = 64'h3FDFFFFFFFFFFFFE; - ReadData2E = 64'h3F0FFFFFFFF7FFC0; + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h001E0000001FFFFF; + ans = 64'h00230000000FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1119117\n"); + end + ReadData1E = 64'hC320000000080010; + ReadData2E = 64'hBE0FFFFFFBFFBFFF; + ReadData3E = 64'hB9A0000000802000; + ans = 64'h413FFFFFFC0FC01F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1120118\n"); + end + ReadData1E = 64'hBFF007FFFFFFF7FF; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1121119\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h3F9FFFC00000003F; + ReadData3E = 64'h4010008000000100; + ans = 64'h4010107FE0000100; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1122120\n"); + end + ReadData1E = 64'h41C000100000007F; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h400C000000001FFE; + ans = 64'h400C0000080027FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1123121\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h3E7CA47CFD2A982C; ReadData3E = 64'hFFE0000000000001; ans = 64'hFFE0000000000001; FrmE = 3'b000; @@ -142642,12 +43854,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1118735\n"); + $fwrite(fp,"1124122\n"); end - ReadData1E = 64'h9280000001FFFFFE; - ReadData2E = 64'h0000000000000000; - ReadData3E = 64'hBF5008000001FFFE; - ans = 64'hBF5008000001FFFE; + ReadData1E = 64'h5CC212C3C5EA2637; + ReadData2E = 64'h3FF000000000027F; + ReadData3E = 64'hBF9001FFFF800000; + ans = 64'h5CC212C3C5EA2909; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -142681,12 +43893,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1119041\n"); + $fwrite(fp,"1125123\n"); end ReadData1E = 64'h3FE0000000000000; - ReadData2E = 64'h41E0000000003F80; - ReadData3E = 64'h3FFFBFFFFFFFF000; - ans = 64'h41D00000007F3F80; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -142720,12 +43932,12 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1119347\n"); + $fwrite(fp,"1126124\n"); end - ReadData1E = 64'hC3F000200003FFFE; - ReadData2E = 64'h0000000000000001; - ReadData3E = 64'h001FFFFFFFFFFFFE; - ans = 64'h80CFFC400007FFFC; + ReadData1E = 64'hC1CFBF7FFFFFFFFE; + ReadData2E = 64'h3C4FFFFFFFFE1FFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFF0000000FDFBFF; FrmE = 3'b000; #10 // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this @@ -142759,7 +43971,195280 @@ initial if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1119653\n"); + $fwrite(fp,"1127125\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h15CFF003FFFFFFFF; + ans = 64'h3FCFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1128126\n"); + end + ReadData1E = 64'hC39080FFFFFFFFFF; + ReadData2E = 64'hC3F0000000020080; + ReadData3E = 64'h4180008000000007; + ans = 64'h47908100000210A3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1129127\n"); + end + ReadData1E = 64'hC38FFEFFFFFFFFF0; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h8000000000000000; + ans = 64'hC37FFEFFFFFFFFF2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1130128\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h5E53E11E6D87C39C; + ReadData3E = 64'h3FDEB07E4B35C1F5; + ans = 64'h5E43E11E6D87C39C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1131129\n"); + end + ReadData1E = 64'hBFDFBFDFFFFFFFFF; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h7FFFFFE200000000; + ans = 64'h7FFFFFE200000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1132130\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h3DF000800000007F; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000040021; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1133131\n"); + end + ReadData1E = 64'h3FBFFFFFFFF7F7FF; + ReadData2E = 64'hFFD3FFFFFFFFFFF8; + ReadData3E = 64'hBD60000000800080; + ans = 64'hFFA3FFFFFFFAFAF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1134132\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC007FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1135133\n"); + end + ReadData1E = 64'h43EFFFFFDFFFFDFF; + ReadData2E = 64'h4020010000000007; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h442000FFEFFEFF06; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1136134\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'hC1DFFFFFFFFB7FFE; + ans = 64'hC1DFFFFFFF7B7FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1137135\n"); + end + ReadData1E = 64'h3FE000000200001F; + ReadData2E = 64'h8BAE28B1C7A540E6; + ReadData3E = 64'h6C4001FFFFDFFFFF; + ans = 64'h6C4001FFFFDFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1138136\n"); + end + ReadData1E = 64'h47EFFFFFFFF80400; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'hC340000000000000; + ans = 64'h480FFFFFFFF80400; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1139137\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h43DBFFFBFFFFFFFF; + ReadData3E = 64'hC3C6DFCDD21563DB; + ans = 64'h43A480B8B7AA7090; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1140138\n"); + end + ReadData1E = 64'h40100003FFFDFFFE; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFCF; + ans = 64'h40400003FFFDFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1141139\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'hC0E707AB47C7F7C4; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hC0D707BB47C7F7C4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1142140\n"); + end + ReadData1E = 64'h3F2FFFFFFC3FFFFF; + ReadData2E = 64'hA4B00400000001FF; + ReadData3E = 64'h7FE001000001FFFF; + ans = 64'h7FE001000001FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1143141\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h433FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1144142\n"); + end + ReadData1E = 64'h3BAFFFFFFF7FFF80; + ReadData2E = 64'h41D120055488737A; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1145143\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hC03000000FFFF000; + ans = 64'h7FD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1146144\n"); + end + ReadData1E = 64'h41FCEAA5BD079204; + ReadData2E = 64'hFFF0010000000400; + ReadData3E = 64'h714177B9A2A648FA; + ans = 64'hFFF8010000000400; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1147145\n"); + end + ReadData1E = 64'h802F35EE6D872210; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1148146\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h000F8000000FFFFF; + ReadData3E = 64'hBF6000000200007E; + ans = 64'hBF6000000200007E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1149147\n"); + end + ReadData1E = 64'hC050041000000000; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h392FFFDFFF7FFFFF; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1150148\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'hB8000003DFFFFFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'hB7F00003DFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1151149\n"); + end + ReadData1E = 64'hCFEFFFFFFFFFFF87; + ReadData2E = 64'hC7F000001FFFEFFE; + ReadData3E = 64'h671FF7FFFFF7FFFF; + ans = 64'h671FF7FFFFF7FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1152150\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h8017FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1153151\n"); + end + ReadData1E = 64'h3813FFFFFFFFFFC0; + ReadData2E = 64'hC5DFFFC000001FFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC01000000009FFEB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1154152\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'hC3A334D8000BB723; + ans = 64'hC3A334D8000BB723; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1155153\n"); + end + ReadData1E = 64'hBF1FFFEFF7FFFFFF; + ReadData2E = 64'hC62887E224CDB1D6; + ReadData3E = 64'h47E0A23809A2395A; + ans = 64'h47E0A23809A2459E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1156154\n"); + end + ReadData1E = 64'h3FE000000FFFFC00; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1157155\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'hB81F000FFFFFFFFF; + ReadData3E = 64'h418EFFFFFFFFDFFE; + ans = 64'h418EFFFFFFFFDFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1158156\n"); + end + ReadData1E = 64'hC02FBEFFFFFFFFFE; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h43DFBFFEFFFFFFFE; + ans = 64'h43DFBFFEFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1159157\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'hBEF00000000003FE; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1160158\n"); + end + ReadData1E = 64'h3E10801FFFFFFFFF; + ReadData2E = 64'hC3FFFFF7FFFFFFEE; + ReadData3E = 64'h001FFFFFFFDF7FFF; + ans = 64'hC220801BDFF7FFF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1161159\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1162160\n"); + end + ReadData1E = 64'h47F0000003FBFFFF; + ReadData2E = 64'h402FA400D60614FB; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h482FA400DDE72C2E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1163161\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'h1D710E029018234D; + ans = 64'hBFD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1164162\n"); + end + ReadData1E = 64'h00000008FFFFFFFF; + ReadData2E = 64'hB807BAF9E9726944; + ReadData3E = 64'hC3C000000001FFBE; + ans = 64'hC3C000000001FFBE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1165163\n"); + end + ReadData1E = 64'hC3DFFFE0FFFFFFFF; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1166164\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h7FBFDFFFFFFC0000; + ReadData3E = 64'hBFFD60525C210608; + ans = 64'h7FAFDFFFFFFC0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1167165\n"); + end + ReadData1E = 64'hC7EFFFFFFFF0000F; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'hBFBC00FFFFFFFFFE; + ans = 64'h47EFFFFFFFF00011; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1168166\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h47E0000000010FFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h47D0000000010FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1169167\n"); + end + ReadData1E = 64'hC7E0000005FFFFFF; + ReadData2E = 64'hC5800000000FF7FE; + ReadData3E = 64'h43E007FFFFFFFBFF; + ans = 64'h4D700000060FF7FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1170168\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FEFFFFFFFFFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1171169\n"); + end + ReadData1E = 64'h4054A31F2573B44B; + ReadData2E = 64'h3F4FFFFFFFE00040; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h3FB4A31F255F1155; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1172170\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'h3FBFBFFFFFBFFFFF; + ans = 64'hBFFE04000003FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1173171\n"); + end + ReadData1E = 64'h41A6957F2DBBC37D; + ReadData2E = 64'h4E3FFFFBFFFDFFFF; + ReadData3E = 64'hBF3FFFFF07FFFFFF; + ans = 64'h4FF6957C5B0A746D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1174172\n"); + end + ReadData1E = 64'h3F60000400000001; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'h400FDFFFF8000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1175173\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'hC010000007FFF7FF; + ReadData3E = 64'hC1BFFFFE007FFFFF; + ans = 64'hC1BFFFFE02800000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1176174\n"); + end + ReadData1E = 64'h43DFFF0000000400; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h4CEFFBFFFFFFFFBE; + ans = 64'h4CEFFBFFFFFFFFBE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1177175\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'hC1000003FFFFFFFF; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hC0F00003FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1178176\n"); + end + ReadData1E = 64'h37E00000403FFFFF; + ReadData2E = 64'hBFEBDEAD3722F42C; + ReadData3E = 64'hB89EF4CDBB9B0530; + ans = 64'hB89EF68BA6757602; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1179177\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hFFD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1180178\n"); + end + ReadData1E = 64'h50B0010001FFFFFF; + ReadData2E = 64'hC3FEA7A17C5587AC; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hD4BEA98BFA424132; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1181179\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h3FEFFFFFFDFFFC00; + ans = 64'hFFDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1182180\n"); + end + ReadData1E = 64'h415FFFFFFFFFEFFD; + ReadData2E = 64'hB7FFDFFFE0000000; + ReadData3E = 64'h43EFFFFDFFFFFDFF; + ans = 64'h43EFFFFDFFFFFDFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1183181\n"); + end + ReadData1E = 64'h402800000003FFFE; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1184182\n"); + end + ReadData1E = 64'h3FE0000000000000; + ReadData2E = 64'h380EDE77E23E6828; + ReadData3E = 64'hAAF75C1C1B992311; + ans = 64'h37FEDE77E23E6828; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1185183\n"); + end + ReadData1E = 64'hC1CFBFFFFFFFFFBE; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h4800007FFFFFC000; + ans = 64'h4800007FFFFFC000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1186184\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'hC00FFFFFF7FFFFEF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1187185\n"); + end + ReadData1E = 64'h4EAFFFFFF8100000; + ReadData2E = 64'hBD7FC00000080000; + ReadData3E = 64'hBFDFBFFFFFFFFFC0; + ans = 64'hCC3FBFFFF827E000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1188186\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1189187\n"); + end + ReadData1E = 64'h400FFFFE0000FFFF; + ReadData2E = 64'h401FC00007FFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4040DFFF06007EBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1190188\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'h434DDFFFFFFFFFFF; + ans = 64'h434DDFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1191189\n"); + end + ReadData1E = 64'h8A9D18B9D465A3FA; + ReadData2E = 64'hB7FFF00001000000; + ReadData3E = 64'h000EA68734EE63E8; + ans = 64'h02AD0A2D78643E4A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1192190\n"); + end + ReadData1E = 64'h3CAFFFFFFFC03FFF; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'h395FFFFFFFC04001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1193191\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h41400001000001FE; + ReadData3E = 64'hBF4459F5FF1B6B7C; + ans = 64'h41300000FFD74E13; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1194192\n"); + end + ReadData1E = 64'h4020040001FFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h47F69B4BF527EC4F; + ans = 64'h47F69B4BF527EC4F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1195193\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h4780000004000007; + ReadData3E = 64'hC010000000000001; + ans = 64'h4770000004000008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1196194\n"); + end + ReadData1E = 64'hBFF0000080000002; + ReadData2E = 64'h28D00000008003FE; + ReadData3E = 64'h37EFF7FFE0000000; + ans = 64'h37EFF7FFE0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1197195\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h40207FFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1198196\n"); + end + ReadData1E = 64'hC3F892FA4C2D3226; + ReadData2E = 64'h4000000800000040; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC408930695AA589F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1199197\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'hC1C0008000000001; + ans = 64'hC1C0007FFFE00001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1200198\n"); + end + ReadData1E = 64'hBAC00000FF000000; + ReadData2E = 64'hC3E0001080000000; + ReadData3E = 64'h531C07FFFFFFFFFF; + ans = 64'h531C07FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1201199\n"); + end + ReadData1E = 64'h3FEFFFFF80007FFE; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1202200\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h3BEEEBFC728B23E2; + ReadData3E = 64'h461BDCB34255CD01; + ans = 64'h461BDCB34255CD01; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1203201\n"); + end + ReadData1E = 64'h2060000001007FFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFD7FFE; + ans = 64'h3FDFFFFFFFFD7FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1204202\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h43C7FC396C273DD5; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h43B7FC396C273DD7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1205203\n"); + end + ReadData1E = 64'hBDBFFF80007FFFFF; + ReadData2E = 64'hC34A63B426BB1FA9; + ReadData3E = 64'h4710000000000107; + ans = 64'h4710000000000107; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1206204\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h3FF0000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1207205\n"); + end + ReadData1E = 64'h3FEECEE5BACFD752; + ReadData2E = 64'hBB9000000000003F; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1208206\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h43400000000FFBFF; + ans = 64'h43400000000FFC00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1209207\n"); + end + ReadData1E = 64'hCD60440000000000; + ReadData2E = 64'hBFFFF800007FFFFF; + ReadData3E = 64'hC1906E430D965007; + ans = 64'h4D703FEF00410FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1210208\n"); + end + ReadData1E = 64'h001FFFFA00000000; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1211209\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h407FFFFFFF77FFFE; + ReadData3E = 64'h41EFFFFFFEFFFBFF; + ans = 64'h41F000000F7FFDFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1212210\n"); + end + ReadData1E = 64'hDB1D7EC14B0ECB3B; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h380780C0FF027597; + ans = 64'hDE7D7EC14B0ECB3A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1213211\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h41EFFFFFFC000007; + ReadData3E = 64'h8010000000000001; + ans = 64'h41DFFFFFFC000009; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1214212\n"); + end + ReadData1E = 64'hBFDFFFFFFBFFF000; + ReadData2E = 64'hC3C4000004000000; + ReadData3E = 64'h56607FFFFE000000; + ans = 64'h56607FFFFE000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1215213\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1216214\n"); + end + ReadData1E = 64'h4BD00000080007FE; + ReadData2E = 64'h3FDFF77FFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4BBFF7800FFBCFF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1217215\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h37EFFFE080000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1218216\n"); + end + ReadData1E = 64'h801FFEFF7FFFFFFF; + ReadData2E = 64'hBF30001000000100; + ReadData3E = 64'h7FEDFCADA82008EE; + ans = 64'h7FEDFCADA82008EE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1219217\n"); + end + ReadData1E = 64'hC010000007F7FFFE; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1220218\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'hC7CCFFFFFFFFFFFF; + ReadData3E = 64'hC02C62412F0E9302; + ans = 64'hC7BD000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1221219\n"); + end + ReadData1E = 64'h41EFFFFFFFF7FEFF; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'hC32FC0007FFFFFFF; + ans = 64'hC32FC0007FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1222220\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h3FD9F677274052E6; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1223221\n"); + end + ReadData1E = 64'h40FFFF00000001FE; + ReadData2E = 64'hBC5800000FFFFFFF; + ReadData3E = 64'h0AD0000FFFFFFF00; + ans = 64'hBD67FF400FFF817E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1224222\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1225223\n"); + end + ReadData1E = 64'hC3EFFFFFFFFFFF40; + ReadData2E = 64'h000B340C640086EA; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1226224\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'h402FF8001FFFFFFE; + ans = 64'h402FF8001FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1227225\n"); + end + ReadData1E = 64'hBFD8080000000000; + ReadData2E = 64'hB6DFFFFFBFDFFFFE; + ReadData3E = 64'hC29000000004007F; + ans = 64'hC29000000004007F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1228226\n"); + end + ReadData1E = 64'h380FFFF3FFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'hB4CFFFF3FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1229227\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h3FE0000000008FFE; + ReadData3E = 64'h40300000803FFFFF; + ans = 64'h403040008040023F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1230228\n"); + end + ReadData1E = 64'h3FBFFFFFFFFF7FF6; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'hB2F000200000007E; + ans = 64'hBF9FFFFFFFFF7FF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1231229\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h4C3FF80007FFFFFF; + ReadData3E = 64'h4000000000000001; + ans = 64'h4C2FF80008000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1232230\n"); + end + ReadData1E = 64'h3FD0400000001000; + ReadData2E = 64'hC23007DFFFFFFFFF; + ReadData3E = 64'hFFEBF79B45DCBA59; + ans = 64'hFFEBF79B45DCBA59; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1233231\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC010FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1234232\n"); + end + ReadData1E = 64'h43FFFFFFFFDFF800; + ReadData2E = 64'hF8FFFFFFFFF00003; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hFD0FFFFFFFCFF803; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1235233\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h3FCFBFFFFFFFEFFF; + ans = 64'hBFD0200000000800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1236234\n"); + end + ReadData1E = 64'hC3F4958815001E24; + ReadData2E = 64'hBFA0017FFFFFFFFF; + ReadData3E = 64'hBFC0008000000001; + ans = 64'h43A4977619C21626; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1237235\n"); + end + ReadData1E = 64'hC3D07FFFFFFBFFFE; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'h43D077FFFFFBFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1238236\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'h7FE00000FFFFFBFF; + ReadData3E = 64'hC0200000007EFFFE; + ans = 64'h7FD00000FFFFFC00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1239237\n"); + end + ReadData1E = 64'h47FF0007FFFFFFFF; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'hD47000000FFEFFFE; + ans = 64'hD47000000FFEFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1240238\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'hC0203FFFFFFEFFFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hC0113FFFFFFF0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1241239\n"); + end + ReadData1E = 64'hB9DFF000000007FE; + ReadData2E = 64'hBF9FEFFFFFFFFFFF; + ReadData3E = 64'h328FFFFFFF9FFFFF; + ans = 64'h398FE008000007F9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1242240\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hBFF8000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1243241\n"); + end + ReadData1E = 64'h48FFFFEFFFF80000; + ReadData2E = 64'h748EF2A2AEAF3A17; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1244242\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFF7FFFFF6; + ans = 64'hC34FFFFFF7FFFFF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1245243\n"); + end + ReadData1E = 64'h3AF00000000200FF; + ReadData2E = 64'h48081FFFFFFFFFFE; + ReadData3E = 64'hFFF000000F800000; + ans = 64'hFFF800000F800000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1246244\n"); + end + ReadData1E = 64'hC7E000041FFFFFFF; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h4B30000420000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1247245\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'hB7F46FEEF2187CA0; + ReadData3E = 64'hC800000000007FF0; + ans = 64'hC800000000007FF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1248246\n"); + end + ReadData1E = 64'hC1260D68EEAD7506; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'hC34000000007FFDE; + ans = 64'h44860D67EEAD7504; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1249247\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'hFFEFFBC000000000; + ReadData3E = 64'h0000000000000001; + ans = 64'hFFDFFBC000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1250248\n"); + end + ReadData1E = 64'hA1AFFFFFC1000000; + ReadData2E = 64'hC1E0120000000000; + ReadData3E = 64'h3FE0080002000000; + ans = 64'h3FE0080002000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1251249\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hFFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1252250\n"); + end + ReadData1E = 64'hC01C82A9FADA65CA; + ReadData2E = 64'h416DFFFFFFFF7FFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC19ABA7F6B2C4D62; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1253251\n"); + end + ReadData1E = 64'h3FE0000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'h3FD0020000000000; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1254252\n"); + end + ReadData1E = 64'h41EFFF8020000000; + ReadData2E = 64'hB7FE82725B42D080; + ReadData3E = 64'hA2BFD870E6AFAD39; + ans = 64'hB9FE81F86FFBD5D0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1255253\n"); + end + ReadData1E = 64'hC78FF3FFFFFFFFFE; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1256254\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h40D001FFFFFFFEFF; + ReadData3E = 64'h405F7EFFFFFFFFFE; + ans = 64'h40D0217EFFFFFEFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1257255\n"); + end + ReadData1E = 64'h41F4F3FFA448D7F0; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'hC0785068EBC13F00; + ans = 64'hC0785068EBC13F00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1258256\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h8000120000000000; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1259257\n"); + end + ReadData1E = 64'h37E000047FFFFFFF; + ReadData2E = 64'h412007FFFFFFFF7F; + ReadData3E = 64'h3F9FFFFFFFFFFF7F; + ans = 64'h3F9FFFFFFFFFFF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1260258\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1261259\n"); + end + ReadData1E = 64'hD1D0007FF7FFFFFF; + ReadData2E = 64'hBFCD0E0521909DDB; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h51AD0EED8332A7CD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1262260\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h3EFFFFFF87FFFFFE; + ans = 64'h3EFFFFFF88007FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1263261\n"); + end + ReadData1E = 64'h217ECF0EA8B02E0F; + ReadData2E = 64'hC490007BFFFFFFFF; + ReadData3E = 64'h47EFFFFFFFFBFFFF; + ans = 64'h47EFFFFFFFFBFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1264262\n"); + end + ReadData1E = 64'hBE6FF80000000007; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1265263\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h40A0007FFDFFFFFE; + ReadData3E = 64'hBFF03FFFFFFEFFFF; + ans = 64'h409FFCEFFC00003B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1266264\n"); + end + ReadData1E = 64'hB80FFFFFFFFBFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'hC01B1F0231A3E930; + ans = 64'hC01B1F0231A3E930; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1267265\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h001FFFF7FFFFFBFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1268266\n"); + end + ReadData1E = 64'hBFCFEFFFFFFFFC00; + ReadData2E = 64'hEFFFFF6FFFFFFFFF; + ReadData3E = 64'h1877A05D3B12C394; + ans = 64'h6FDFEF7047FFFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1269267\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4007FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1270268\n"); + end + ReadData1E = 64'h410928D5270CFC38; + ReadData2E = 64'h42AFFFFFFFFFFE7F; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h43C928D5270CFB09; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1271269\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'hC1EFFFDFFFFFFFDE; + ans = 64'hC1EFFFDFFFDFFFDE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1272270\n"); + end + ReadData1E = 64'hC1F7FFFFFFFFFFFB; + ReadData2E = 64'hC14FF80003FFFFFF; + ReadData3E = 64'hC001F7FFFFFFFFFF; + ans = 64'h4357FA0002FFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1273271\n"); + end + ReadData1E = 64'h3FDFFFFFFE00FFFE; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'h4013FFFFFFC02000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1274272\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h3FD8000000000002; + ReadData3E = 64'h3FCF080000000000; + ans = 64'h3FE3C20000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1275273\n"); + end + ReadData1E = 64'hBFB0107FFFFFFFFE; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h7FD000000003DFFF; + ans = 64'h7FD000000003DFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1276274\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h3D4FFFFFFBF00000; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3D5001FFFDF80000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1277275\n"); + end + ReadData1E = 64'h400FF8007FFFFFFF; + ReadData2E = 64'h41FA682E4EF47F8B; + ReadData3E = 64'h4B1BFFFFFFFEFFFE; + ans = 64'h4B1BFFFFFFFEFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1278276\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1279277\n"); + end + ReadData1E = 64'h000FFFF3FFFFFFFF; + ReadData2E = 64'hA510000000003FFD; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1280278\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h405FFDFFFFFFFE00; + ans = 64'h434000000000003F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1281279\n"); + end + ReadData1E = 64'h3FFB25B73BD914E5; + ReadData2E = 64'h41D0000003FFFFF7; + ReadData3E = 64'h43EFEFEFFFFFFFFF; + ans = 64'h43EFEFF0000D92DB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1282280\n"); + end + ReadData1E = 64'h8C2FFFFF7FFFFFF6; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1283281\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h3FB000000000FEFF; + ReadData3E = 64'hC036AAB3CC7F6DC2; + ans = 64'hC0369AB3CC7F6CC3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1284282\n"); + end + ReadData1E = 64'hC1F02000001FFFFF; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hE8F000000040000F; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1285283\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h48035527E2465945; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1286284\n"); + end + ReadData1E = 64'hC1FAA81F38407228; + ReadData2E = 64'h41DFE000003FFFFE; + ReadData3E = 64'h43F055DF484E5C9D; + ans = 64'h43C8791DDD7CDD1E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1287285\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1288286\n"); + end + ReadData1E = 64'hBF9EFFFFFFFBFFFF; + ReadData2E = 64'hB770100007FFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1289287\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hC1C5354E008E080A; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1290288\n"); + end + ReadData1E = 64'hBCA0000000000042; + ReadData2E = 64'h41DFFFFFFFDFFFF7; + ReadData3E = 64'h380004000000003F; + ans = 64'hBE8FFFFFFFE0007B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1291289\n"); + end + ReadData1E = 64'h41C01FEFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'h81E01FEFFF7FFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1292290\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h43CFFFFFFFFFFF03; + ReadData3E = 64'hBC2FFFFFFEFFFFEF; + ans = 64'h43CFFFFFFFFFFF02; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1293291\n"); + end + ReadData1E = 64'h41F20000000001FF; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h801FF00007FFFFFF; + ans = 64'h82120000001FF1FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1294292\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'hC7E08000007FFFFF; + ReadData3E = 64'hC010000000000001; + ans = 64'hC7E08000007FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1295293\n"); + end + ReadData1E = 64'h45A0000000000003; + ReadData2E = 64'h4010000FFFFFFF00; + ReadData3E = 64'h594000000001FBFE; + ans = 64'h594000000001FBFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1296294\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1297295\n"); + end + ReadData1E = 64'h3160040080000000; + ReadData2E = 64'hC3C47319CF87E2DF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1298296\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h47E03FF7FFFFFFFF; + ans = 64'h47E03FF7FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1299297\n"); + end + ReadData1E = 64'h802FFFF7C0000000; + ReadData2E = 64'h7FF0023FFFFFFFFF; + ReadData3E = 64'hC3F0000000000207; + ans = 64'h7FF8023FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1300298\n"); + end + ReadData1E = 64'h3FC1E79F014DFCCD; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1301299\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h47FFFFFFE03FFFFF; + ReadData3E = 64'h41C41FFFFFFFFFFE; + ans = 64'h47FFFFFFE03FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1302300\n"); + end + ReadData1E = 64'hBFFDEFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hC0000000000207FF; + ans = 64'hBFF1080000041000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1303301\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'hBFF01F0000000000; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hBFE03DFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1304302\n"); + end + ReadData1E = 64'hED30001FFFFF7FFE; + ReadData2E = 64'hBFB000000003FF00; + ReadData3E = 64'h3800000FFF7FFFFE; + ans = 64'h6CF0002000037F06; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1305303\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1306304\n"); + end + ReadData1E = 64'hC0AE000000008000; + ReadData2E = 64'h37EBFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1307305\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFE000003FFF; + ans = 64'hC34FFFE000004000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1308306\n"); + end + ReadData1E = 64'h402FFBFFFFFFFFFD; + ReadData2E = 64'hC028EFD2B6A7387A; + ReadData3E = 64'hDDDFFFF7FF7FFFFE; + ans = 64'hDDDFFFF7FF7FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1309307\n"); + end + ReadData1E = 64'hBFE07FFFFFFFFFFF; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'hC000000000000000; + ans = 64'hBFEF000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1310308\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'hBFF001F800000000; + ReadData3E = 64'h80207FFFFF000000; + ans = 64'hBFF001F7FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1311309\n"); + end + ReadData1E = 64'hBCA000DFFFFFFFFF; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hCD2FDFFFFFFFBFFF; + ans = 64'hCD2FDFFFFFFFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1312310\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'hC4D01FFFFFFFEFFF; + ReadData3E = 64'h8010000000000001; + ans = 64'hC4D01FFFFFFFEFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1313311\n"); + end + ReadData1E = 64'hCCF000000007BFFF; + ReadData2E = 64'h38001FFFFFFFFFC0; + ReadData3E = 64'h3FC22DC18F6D6827; + ans = 64'hC50020000007CF3F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1314312\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hC01FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1315313\n"); + end + ReadData1E = 64'h3E5FFFFFEFFFFEFE; + ReadData2E = 64'h54BFFBFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h532FFBFFF001FEFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1316314\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h802A61AFF4017121; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1317315\n"); + end + ReadData1E = 64'hBEB0007FFC000000; + ReadData2E = 64'hC39FFFFFFC000040; + ReadData3E = 64'hFDDFFFFFFBFFFF00; + ans = 64'hFDDFFFFFFBFFFF00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1318316\n"); + end + ReadData1E = 64'h002FFFFFFFF00003; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hC01EFFFFFFF00003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1319317\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h4023FFFFFFFFFEFF; + ReadData3E = 64'hC7F07BFFFFFFFFFF; + ans = 64'hC7F07BFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1320318\n"); + end + ReadData1E = 64'h3CAFFFFFFFFF3FFE; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h3F4FF82000000000; + ans = 64'hFCAFFFFFFFFF3FFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1321319\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'h3F80007FFDFFFFFE; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1322320\n"); + end + ReadData1E = 64'hFFEFFFFBFFFFFE00; + ReadData2E = 64'hBE10000040002000; + ReadData3E = 64'hC03FFFFFEFFFFFF8; + ans = 64'h7E0FFFFC80002E00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1323321\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFF; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1324322\n"); + end + ReadData1E = 64'h4D90020000000000; + ReadData2E = 64'h4005F65C217D14C1; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h4DA5F91AED014464; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1325323\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h3FDFD7876121EBED; + ans = 64'h3FDFD7876121EBED; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1326324\n"); + end + ReadData1E = 64'h3FC0000000000008; + ReadData2E = 64'h072000000007FFFF; + ReadData3E = 64'h3F80000000000FBF; + ans = 64'h3F80000000000FBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1327325\n"); + end + ReadData1E = 64'hC7F0001FFFFFFFFF; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'h8810001FFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1328326\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h9920100000010000; + ReadData3E = 64'h41C7FFEFFFFFFFFE; + ans = 64'h41C7FFEFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1329327\n"); + end + ReadData1E = 64'h7FF126C2FE67B141; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'hBCAFF80200000000; + ans = 64'h7FF926C2FE67B141; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1330328\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h41DFDFFFFFFF7FFF; + ReadData3E = 64'h4000000000000001; + ans = 64'h41DFE000007F7FFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1331329\n"); + end + ReadData1E = 64'h3FEB276D44D73DEC; + ReadData2E = 64'h47E0000003BFFFFF; + ReadData3E = 64'hC7E00000008FFFFF; + ans = 64'hC7B3624AD7AE11DE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1332330\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1333331\n"); + end + ReadData1E = 64'hC1FF7FFFFFFFFFFF; + ReadData2E = 64'h41FDC514C7D8EFEF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hC40D4E0074B98C2E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1334332\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h801FFFFFE0004000; + ans = 64'h3FCFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1335333\n"); + end + ReadData1E = 64'h4038BD0887D8A2A9; + ReadData2E = 64'hC010000000000013; + ReadData3E = 64'h4030000020003FFF; + ans = 64'hC054BD087FD892C7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1336334\n"); + end + ReadData1E = 64'hFFE58B0C5BAA92D5; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'hFFD58B0C5BAA92D4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1337335\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'hC03FFFDFFFFFFFEF; + ReadData3E = 64'hC01FFCFFFFFFFFFE; + ans = 64'hC043FF8FFFFFFFF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1338336\n"); + end + ReadData1E = 64'h3FC07FFFEFFFFFFF; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h381F800000000200; + ans = 64'h3FB07FFFF0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1339337\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h0EEFFFDFFFFFFFF8; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1340338\n"); + end + ReadData1E = 64'h40002000000003FF; + ReadData2E = 64'hC036B89EB0064874; + ReadData3E = 64'h47E000000000BFFF; + ans = 64'h47E000000000BFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1341339\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FF7FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1342340\n"); + end + ReadData1E = 64'hBF9FFFFFFFFFC07E; + ReadData2E = 64'hBFCFF80020000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1343341\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hBFD0000800000400; + ans = 64'h3FFBFFFDFFFFFEFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1344342\n"); + end + ReadData1E = 64'h7FF013FFFFFFFFFE; + ReadData2E = 64'hB7F0000000180000; + ReadData3E = 64'hB7E0000000400400; + ans = 64'h7FF813FFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1345343\n"); + end + ReadData1E = 64'hC0100000007FFFBF; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hC02E000000FFFF7D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1346344\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h51F000017FFFFFFF; + ReadData3E = 64'h426FFFFFFFFFDFE0; + ans = 64'h51F000017FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1347345\n"); + end + ReadData1E = 64'h3FCFFF80001FFFFF; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h3FB9D61100AC5D4B; + ans = 64'h3FF19D21101AC5D4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1348346\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h7FFFF7FFDFFFFFFE; + ReadData3E = 64'h0000000000000001; + ans = 64'h7FFFF7FFDFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1349347\n"); + end + ReadData1E = 64'hC7F00FFFFFFEFFFF; + ReadData2E = 64'h43C0000000000043; + ReadData3E = 64'hBF7FFFFFFE000006; + ans = 64'hCBC00FFFFFFF0042; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1350348\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h433FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1351349\n"); + end + ReadData1E = 64'hC1CFFDFFFFFFFFEE; + ReadData2E = 64'hCD1FFFFFFDFFFFBF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h4EFFFDFFFE001FAD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1352350\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h4650000400000020; + ans = 64'h4650000400000030; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1353351\n"); + end + ReadData1E = 64'h3F8FFF7FFFFFFEFE; + ReadData2E = 64'h4030000000003FFF; + ReadData3E = 64'h3F8000000000DFFE; + ans = 64'h3FD07FC00000467D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1354352\n"); + end + ReadData1E = 64'hC1CDFFFBFFFFFFFF; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1355353\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'hC027FFFFFFFC0000; + ReadData3E = 64'hFFEFDFFFFFFFFFBF; + ans = 64'hFFEFDFFFFFFFFFBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1356354\n"); + end + ReadData1E = 64'h2B700000000FFF7F; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h3FB4D25CAD420239; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1357355\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'hBFBFFFFFFFFFFF70; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1358356\n"); + end + ReadData1E = 64'hBF900004000000FF; + ReadData2E = 64'h2DCF800000400000; + ReadData3E = 64'h41F3FFFFF7FFFFFF; + ans = 64'h41F3FFFFF7FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1359357\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1360358\n"); + end + ReadData1E = 64'h068FFFFFC0010000; + ReadData2E = 64'hC0CFFFFFFFE01FFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1361359\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'h7FF3FFFFFFFDFFFF; + ans = 64'h7FFBFFFFFFFDFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1362360\n"); + end + ReadData1E = 64'hBD8FDFFFFFFFF7FF; + ReadData2E = 64'h403993D65B9AC7D9; + ReadData3E = 64'hC1F985EB854C88E6; + ans = 64'hC1F985EB854C88E6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1363361\n"); + end + ReadData1E = 64'hBFC0000000001FFC; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1364362\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'hB8007FFFFEFFFFFE; + ReadData3E = 64'h47F07FFFFFFF7FFE; + ans = 64'h47F07FFFFFFF7FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1365363\n"); + end + ReadData1E = 64'hC1C0BEDA4BC19E72; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'h43CFFFFFFFFFFFFE; + ans = 64'h43CFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1366364\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h400FFC0080000000; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h4007FC007FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1367365\n"); + end + ReadData1E = 64'h40100001FFFFEFFF; + ReadData2E = 64'h3F90000000081000; + ReadData3E = 64'h601000040000001F; + ans = 64'h601000040000001F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1368366\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1369367\n"); + end + ReadData1E = 64'h22400100007FFFFF; + ReadData2E = 64'h7FD000003F800000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h622001004003F801; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1370368\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h5800000080020000; + ans = 64'h5800000080020000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1371369\n"); + end + ReadData1E = 64'h3CAC454E4047198B; + ReadData2E = 64'h40383FFFFFFFFFFE; + ReadData3E = 64'h41F0000800000400; + ans = 64'h41F0000800000400; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1372370\n"); + end + ReadData1E = 64'h3F8000000007BFFF; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'h4010000000000000; + ans = 64'h400FF7FFFFFFFC20; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1373371\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'hC00FFFFEFFFFFFFC; + ReadData3E = 64'h407DE86D8F81A442; + ans = 64'h407DA86D9181A442; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1374372\n"); + end + ReadData1E = 64'hC9215ED6E427EB9F; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h40001F8000000000; + ans = 64'h49215ED6E427EB9E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1375373\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'hC3C0000200000200; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hC3C00002000001FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1376374\n"); + end + ReadData1E = 64'h002FFFFFFFFFC07F; + ReadData2E = 64'h41F0FFFFFFEFFFFE; + ReadData3E = 64'hC3FFFFFFFE1FFFFF; + ans = 64'hC3FFFFFFFE1FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1377375\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1378376\n"); + end + ReadData1E = 64'hBFD000000003FFFF; + ReadData2E = 64'hC00FFFFC007FFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1379377\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hC04FFFFFF800FFFF; + ans = 64'hC0507FFFFC007FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1380378\n"); + end + ReadData1E = 64'h470D88AAB1189141; + ReadData2E = 64'h00000000003FFFEF; + ReadData3E = 64'hB2100000003FFBFE; + ans = 64'hB2100000003FFBFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1381379\n"); + end + ReadData1E = 64'hC0952EFA644676E2; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h40B52E7A644676E1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1382380\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h41E07FFFFBFFFFFE; + ReadData3E = 64'hC06FFFFFFFFFFF7E; + ans = 64'h41E07FFFDBFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1383381\n"); + end + ReadData1E = 64'h43EEFFFFFFFFFFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hC1D000000000407E; + ans = 64'hC41F00000000FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1384382\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'hBF18820A3E493201; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1385383\n"); + end + ReadData1E = 64'h55D040000000001F; + ReadData2E = 64'hBFCFF08E469234AA; + ReadData3E = 64'hBFD00001FFFFFFF8; + ans = 64'hD5B038283FD63EDD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1386384\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1387385\n"); + end + ReadData1E = 64'h30F0000040000006; + ReadData2E = 64'h801FFFFFFF0007FF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1388386\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'hBFB0000000002000; + ans = 64'hFFDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1389387\n"); + end + ReadData1E = 64'h2E1FFFFFFFF7FEFF; + ReadData2E = 64'hB201B017C8892B98; + ReadData3E = 64'h405FDFFFFF000000; + ans = 64'h405FDFFFFF000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1390388\n"); + end + ReadData1E = 64'h43447336ACAF7BD8; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h0010000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1391389\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'hC3E000400FFFFFFE; + ReadData3E = 64'h434000003FFFFFFB; + ans = 64'hC3DFF8801FDFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1392390\n"); + end + ReadData1E = 64'h5FDFFFFFFFF80007; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h44EEFDFFFFFFFFFF; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1393391\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFFFE; + ReadData2E = 64'h8BF0500000000000; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1394392\n"); + end + ReadData1E = 64'h4000000100000100; + ReadData2E = 64'hBFEFFFFFFFF88000; + ReadData3E = 64'hA6300203FFFFFFFF; + ans = 64'hC0000000FFFC4100; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1395393\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1396394\n"); + end + ReadData1E = 64'h4060000007FFF7FF; + ReadData2E = 64'hBFFFBFFFFFFFDFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC06FC0000FDFD01C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1397395\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h3F036FF57565055C; + ans = 64'h3F036FF57565055C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1398396\n"); + end + ReadData1E = 64'h41003FFFFFFFF000; + ReadData2E = 64'h40007DFFFFFFFFFF; + ReadData3E = 64'hC1F2332BF5012AF6; + ans = 64'hC1F232E8F5212AF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1399397\n"); + end + ReadData1E = 64'hBF043BE8683B8A46; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1400398\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h41EFFFFC0007FFFF; + ReadData3E = 64'h0000000200000001; + ans = 64'h41EFFFFC0007FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1401399\n"); + end + ReadData1E = 64'h4710000003FFBFFF; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h3FFFBFFFFF7FFFFE; + ans = 64'h43C0000003FFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1402400\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h3C15FD7FECF4636B; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1403401\n"); + end + ReadData1E = 64'h41E000000081FFFE; + ReadData2E = 64'h480FFFFFEFFF8000; + ReadData3E = 64'h7FFFFFFFF80007FE; + ans = 64'h7FFFFFFFF80007FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1404402\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFE7FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1405403\n"); + end + ReadData1E = 64'h480000004FFFFFFF; + ReadData2E = 64'h3800FD82747B0D05; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1406404\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hBFE1D0D952DC6B21; + ans = 64'hBFAD0D952DC6B220; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1407405\n"); + end + ReadData1E = 64'hBFE4080000000000; + ReadData2E = 64'h43ED1750B8F8AC34; + ReadData3E = 64'hBFE000003FFFBFFF; + ans = 64'hC3E235D847C9A9CC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1408406\n"); + end + ReadData1E = 64'hC01FFFFEFFFFFDFF; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'hC017FFFF7FFFFF00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1409407\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'hC3EFFFFFFEFFBFFF; + ReadData3E = 64'hC00807FFFFFFFFFF; + ans = 64'hC3EFFFFFFEFFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1410408\n"); + end + ReadData1E = 64'h3FCFFFFFFFE7FFFE; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h3FBFBFFFFFFFFE00; + ans = 64'h3FD7EFFFFFF3FF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1411409\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'hC3CA224B8B0603AD; + ReadData3E = 64'h8010000000000001; + ans = 64'hC3CA224B8B0603AD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1412410\n"); + end + ReadData1E = 64'h43E000FFFFFFF7FF; + ReadData2E = 64'h3FD000081FFFFFFF; + ReadData3E = 64'h41DFFFC00003FFFF; + ans = 64'h43C0010820C1F77E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1413411\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h4000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1414412\n"); + end + ReadData1E = 64'hB81000000007BFFF; + ReadData2E = 64'h434000000000083E; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1415413\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h8023EDA4A21ABCA9; + ans = 64'h400FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1416414\n"); + end + ReadData1E = 64'h40C00003FFFFFFF8; + ReadData2E = 64'h3FE001FFFFFEFFFE; + ReadData3E = 64'h6158B4F82FD95E89; + ans = 64'h6158B4F82FD95E89; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1417415\n"); + end + ReadData1E = 64'hC3F2EEFDCBDFD7B8; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hC412EEFDCBDFD7B9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1418416\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h7F00007FFE000000; + ReadData3E = 64'h0FEDF361D506AAB8; + ans = 64'h7F00007FFE000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1419417\n"); + end + ReadData1E = 64'h24EFFF80007FFFFF; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h43C000040FFFFFFF; + ans = 64'h43C000040FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1420418\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h3177DFFFFFFFFFFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1421419\n"); + end + ReadData1E = 64'h74700000001EFFFE; + ReadData2E = 64'hBF0FFFFE0007FFFE; + ReadData3E = 64'hC49D4B762419403A; + ans = 64'hF38FFFFE0045FFF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1422420\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1423421\n"); + end + ReadData1E = 64'h3FEFFFFFFFFC0004; + ReadData2E = 64'h3FDFFFFBFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFE000020001FFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1424422\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'h3CEFF00000000800; + ans = 64'h7FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1425423\n"); + end + ReadData1E = 64'h3C0F52106CA69DA2; + ReadData2E = 64'hBFBFFFFF0FFFFFFF; + ReadData3E = 64'h8011FFFFFEFFFFFE; + ans = 64'hBBDF520F81BF2272; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1426424\n"); + end + ReadData1E = 64'h3F85787E1EBD2DD6; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1427425\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h43D36483356DF9A5; + ReadData3E = 64'hC142373F6C12CD9B; + ans = 64'h43D36483356DF089; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1428426\n"); + end + ReadData1E = 64'h40FFFD7FFFFFFFFE; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h3E20000000400000; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1429427\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'hB953FFFFF7FFFFFE; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1430428\n"); + end + ReadData1E = 64'h403004001FFFFFFE; + ReadData2E = 64'hBF6FFFFFFFC0000F; + ReadData3E = 64'h3FDFFFFF7FFEFFFE; + ans = 64'h3FDBFEFF780701FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1431429\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1432430\n"); + end + ReadData1E = 64'h4B90000000003800; + ReadData2E = 64'h43E01FF000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h4F801FF000003870; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1433431\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'hC0766B8D99780603; + ans = 64'hC0766B8D99780603; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1434432\n"); + end + ReadData1E = 64'h8012729861831FA0; + ReadData2E = 64'h40100000008007FF; + ReadData3E = 64'h993FFFFFFF00FFFF; + ans = 64'h993FFFFFFF00FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1435433\n"); + end + ReadData1E = 64'hC035D78B216AD004; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1436434\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h7FEFFFE7FFFFFFFF; + ReadData3E = 64'h0916996ACA2A5CC0; + ans = 64'h7FEFFFE7FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1437435\n"); + end + ReadData1E = 64'h3FF0000000018000; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h41CFFFFFFFFFF5FF; + ans = 64'h41CFFFFFFFFFF5FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1438436\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h3E3FBFFFFFF7FFFE; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFCFFFFFF0200002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1439437\n"); + end + ReadData1E = 64'h802FFFF07FFFFFFE; + ReadData2E = 64'h0018871A539D1E46; + ReadData3E = 64'h7FF400000000FFFE; + ans = 64'h7FFC00000000FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1440438\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hBC90000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1441439\n"); + end + ReadData1E = 64'hBFF3FFFFFF7FFFFE; + ReadData2E = 64'hB9E00000000000FC; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1442440\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hB4EF7FFFFFFF8000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1443441\n"); + end + ReadData1E = 64'h404FEFFFFFFF7FFF; + ReadData2E = 64'hC3480000FFFFFFFF; + ReadData3E = 64'hC1FC7A25AC6DDAC3; + ans = 64'hC3A7F401030EE4B4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1444442\n"); + end + ReadData1E = 64'h4C1077FFFFFFFFFE; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hCC1077FFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1445443\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h3FF25ACCA8F9A9A1; + ReadData3E = 64'hC010000000000BFF; + ans = 64'hC006D299AB83432E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1446444\n"); + end + ReadData1E = 64'hC3E00FFFFFFBFFFE; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h41EFFFFFE7FFFFFF; + ans = 64'h43E01000001BFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1447445\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h434FFFFFFFF8000E; + ReadData3E = 64'h0000000000000001; + ans = 64'h434FFFFFFFF8000E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1448446\n"); + end + ReadData1E = 64'h402FEFFFFFBFFFFF; + ReadData2E = 64'h3EC0000010000040; + ReadData3E = 64'hC3EFFFDFFFFFFFFB; + ans = 64'hC3EFFFDFFFFFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1449447\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1450448\n"); + end + ReadData1E = 64'hBFC040000003FFFE; + ReadData2E = 64'h47FBE7B948A63C2B; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC7CC57582DCFCF07; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1451449\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'hB81000100007FFFF; + ans = 64'hC010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1452450\n"); + end + ReadData1E = 64'h41CFF800000003FE; + ReadData2E = 64'h000FDFFFFFFFBFFE; + ReadData3E = 64'hBFC00100003FFFFE; + ans = 64'hBFC00100003FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1453451\n"); + end + ReadData1E = 64'h43CFF00800000000; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hC3FFF007FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1454452\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'h41DFFFFFFFBFBFFF; + ReadData3E = 64'h3260000400000080; + ans = 64'h41DFFFFFFFBFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1455453\n"); + end + ReadData1E = 64'h183C00000000FFFF; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'hC3EFFFF7FFFFBFFF; + ans = 64'hC3EFFFF7FFFFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1456454\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'hFFBFFFCFFFFFFFFF; + ReadData3E = 64'h4340000000000001; + ans = 64'hFFBFFFCFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1457455\n"); + end + ReadData1E = 64'hB7FFF7FFFFFFFF7E; + ReadData2E = 64'h41FFDFFFFEFFFFFF; + ReadData3E = 64'h3D5751CA9D6A29CA; + ans = 64'h3D5751CA9D6A29C9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1458456\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hFFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1459457\n"); + end + ReadData1E = 64'hBA33FFFFFFFFFE00; + ReadData2E = 64'hC030000000107FFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1460458\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'hC80F07FFFFFFFFFE; + ans = 64'hFFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1461459\n"); + end + ReadData1E = 64'h3A95AF1912866E6A; + ReadData2E = 64'h43F00000005FFFFE; + ReadData3E = 64'h43D7C6E7E25EFE83; + ans = 64'h43D7C6E7E25EFE83; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1462460\n"); + end + ReadData1E = 64'h432F000000000800; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1463461\n"); + end + ReadData1E = 64'h3FF0000000000000; + ReadData2E = 64'hC1DFFFFFFFFFFFFF; + ReadData3E = 64'hC18FFFFFFFFF7BFF; + ans = 64'hC1E07FFFFFFFFDEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1464462\n"); + end + ReadData1E = 64'h9FCFFFFFFFDFF7FE; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h38000000007FBFFE; + ans = 64'h38000000007FBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1465463\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h41CDB533E8AA2541; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h41CDB533E82A2543; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1466464\n"); + end + ReadData1E = 64'hB9FDD62F65A67EF4; + ReadData2E = 64'hB81FFFFFFFF00010; + ReadData3E = 64'h3F0FFC000000FFFE; + ans = 64'h3F0FFC000000FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1467465\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1468466\n"); + end + ReadData1E = 64'h7FDFFF7FFFFFFEFF; + ReadData2E = 64'hBFD0400000003FFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hFFC03FBF00003F7B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1469467\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'h403000000007FFFF; + ans = 64'h403000000007FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1470468\n"); + end + ReadData1E = 64'h7FFFFFFF7FFFFFEF; + ReadData2E = 64'h7FF00C0000000000; + ReadData3E = 64'hB09FFFFFFFFC00FF; + ans = 64'h7FFFFFFF7FFFFFEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1471469\n"); + end + ReadData1E = 64'h380FFFFE000000FF; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1472470\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h802FFFC001000000; + ReadData3E = 64'hC1DFFFFE000007FF; + ans = 64'hC1DFFFFE000007FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1473471\n"); + end + ReadData1E = 64'h7FE020000003FFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h3812A120B787B48E; + ans = 64'h7CA020000003FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1474472\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h3F3FFFFFFFFFFFE7; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3F400000000003F5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1475473\n"); + end + ReadData1E = 64'hBFCFFFFFE7FFFFFE; + ReadData2E = 64'h3F900003BFFFFFFF; + ReadData3E = 64'h3A8E000000400000; + ans = 64'hBF700003B3FFFD2E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1476474\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1477475\n"); + end + ReadData1E = 64'hC3C00FFFFF7FFFFF; + ReadData2E = 64'h25B0000007FBFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1478476\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h400FFFFFE0020000; + ans = 64'h4013FFFFF0010000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1479477\n"); + end + ReadData1E = 64'hFFD00020000001FE; + ReadData2E = 64'hBFBFFFF400000000; + ReadData3E = 64'hC340000000008002; + ans = 64'h7FA00019FFF401FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1480478\n"); + end + ReadData1E = 64'hFC1FFFFFFFF83FFF; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hFC1FFFFFFFF83FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1481479\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hC02FFDFDFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFBF7FF; + ans = 64'h7FEFFFFFFFFBF7FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1482480\n"); + end + ReadData1E = 64'h41D000007FFFFFEE; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hBF8FFFFFDFFEFFFF; + ans = 64'h41E000007FFF7FED; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1483481\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hF4C0001FFFFFFFF6; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1484482\n"); + end + ReadData1E = 64'hC02000800000FFFE; + ReadData2E = 64'h43C0040000000080; + ReadData3E = 64'h3FEFFF9AFB3FDFC0; + ans = 64'hC3F00480200100BE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1485483\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1486484\n"); + end + ReadData1E = 64'h4170000000003000; + ReadData2E = 64'h3FEA1AFB1496D239; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h416A1AFB5497208A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1487485\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hBFF04D42274CD2EB; + ans = 64'h4007D95EEC59968F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1488486\n"); + end + ReadData1E = 64'h46BFFFFFDFFFEFFF; + ReadData2E = 64'h8011E714F46E0F93; + ReadData3E = 64'hFFDFFFFFFFFDFFFF; + ans = 64'hFFDFFFFFFFFDFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1489487\n"); + end + ReadData1E = 64'h3F2EFFFFFFFEFFFE; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h0010000000000000; + ans = 64'h427EFFFFFFFEFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1490488\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h4000000FFFFFFFFF; + ReadData3E = 64'h8010000008000003; + ans = 64'h4000001000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1491489\n"); + end + ReadData1E = 64'hBCA0801000000000; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h830FFFEBFFFFFFFE; + ans = 64'hC000800FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1492490\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hE3307EFFFFFFFFFE; + ReadData3E = 64'hC010000000000001; + ans = 64'hE3307EFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1493491\n"); + end + ReadData1E = 64'hB6B000000100007F; + ReadData2E = 64'hB814000000FFFFFF; + ReadData3E = 64'h7FD00000020003FF; + ans = 64'h7FD00000020003FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1494492\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1495493\n"); + end + ReadData1E = 64'h801DFFC000000000; + ReadData2E = 64'hC3DBFFFFFEFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1496494\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h4020080003FFFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1497495\n"); + end + ReadData1E = 64'h40DFE0000001FFFF; + ReadData2E = 64'h3FDFFFFBFF000000; + ReadData3E = 64'hC3D16A05F75CFD74; + ans = 64'hC3D16A05F75CFD64; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1498496\n"); + end + ReadData1E = 64'h41EFFFFFFFFFE7FF; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1499497\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h615973886D2F139E; + ReadData3E = 64'hBFEEE9861698F165; + ans = 64'h615973886D2F13A0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1500498\n"); + end + ReadData1E = 64'hC1D83AA5047FF003; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'hBF80000087FFFFFF; + ans = 64'hBF80000087FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1501499\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h407E0000003FFFFE; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h407E080000400000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1502500\n"); + end + ReadData1E = 64'hBF90FFFFFFFEFFFE; + ReadData2E = 64'hBFD7573FA0472376; + ReadData3E = 64'hC3E8020000000000; + ans = 64'hC3E8020000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1503501\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1504502\n"); + end + ReadData1E = 64'hC02FEF0000000000; + ReadData2E = 64'h3EC0030000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1505503\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h3FCCC80D59BFF8D3; + ans = 64'h3FCCC80D59BFF8CF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1506504\n"); + end + ReadData1E = 64'h41E00001FFFFC000; + ReadData2E = 64'hC3D07BFFFFFFFFFE; + ReadData3E = 64'h7FDFFFFFFFFFFBFC; + ans = 64'h7FDFFFFFFFFFFBFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1507505\n"); + end + ReadData1E = 64'hC08FEF7FFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'hBFFFFFFFFFFFFC02; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1508506\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hBF86F088B4A9BF73; + ReadData3E = 64'h000FFFBFEFFFFFFF; + ans = 64'hBF86F088B4A9BF74; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1509507\n"); + end + ReadData1E = 64'h4001FFFFC0000000; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'hC1F80D5A60CA217B; + ans = 64'hC1F80D5A60D3217B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1510508\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'h43EF7FFFFFFFFFFC; + ReadData3E = 64'h8010000000000001; + ans = 64'h43EF7FFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1511509\n"); + end + ReadData1E = 64'h40445F90F2EC1099; + ReadData2E = 64'hB128E5F92D918BEF; + ReadData3E = 64'hCB3000004000FFFE; + ans = 64'hCB3000004000FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1512510\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hBFE0000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1513511\n"); + end + ReadData1E = 64'hC023673195AE41FD; + ReadData2E = 64'h3800000001FEFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1514512\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h402FDFFFFDFFFFFF; + ans = 64'h402DDFFFFDFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1515513\n"); + end + ReadData1E = 64'hFFDFFFFC01FFFFFF; + ReadData2E = 64'hC7E7FFFC00000000; + ReadData3E = 64'h41FFFFC1FFFFFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1516514\n"); + end + ReadData1E = 64'hC7FFFAFFFFFFFFFE; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h480FFAFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1517515\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hC34120A007448FE1; + ReadData3E = 64'hBFCE2AE338CAC42B; + ans = 64'hC34120A007448FE2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1518516\n"); + end + ReadData1E = 64'h002FFE0000000007; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'hBFE000000087FFFE; + ans = 64'hBFE000000087FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1519517\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hBFFFFEFFFFFFFFBF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1520518\n"); + end + ReadData1E = 64'h39810001FFFFFFFF; + ReadData2E = 64'h43F0200000000040; + ReadData3E = 64'hB9CFFFFFEFFFFBFE; + ans = 64'h3D81220204000043; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1521519\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1522520\n"); + end + ReadData1E = 64'hB7E100000000007E; + ReadData2E = 64'h47EF148017635DF3; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFF8417206366531; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1523521\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'h40C0000000003FF7; + ans = 64'h40BFF80000007FEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1524522\n"); + end + ReadData1E = 64'hC021FF4825CC38A5; + ReadData2E = 64'h744000000FFFFFBF; + ReadData3E = 64'h43E01FFFFEFFFFFF; + ans = 64'hF471FF4837CB8082; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1525523\n"); + end + ReadData1E = 64'h3E9000000001FBFF; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h8000000000000000; + ans = 64'hC1E000000001FC00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1526524\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hBFB000000FFFFF80; + ReadData3E = 64'h802FFFFFBFFFFFF7; + ans = 64'hBFB000000FFFFF81; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1527525\n"); + end + ReadData1E = 64'h4010000000FFF7FF; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h7FDFFFC000003FFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1528526\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hBC2000000000101F; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1529527\n"); + end + ReadData1E = 64'hC0DFFE00000000FF; + ReadData2E = 64'hC3D4C23A762F52B4; + ReadData3E = 64'h40200001FFFFFFF7; + ans = 64'h44C4C0EE5287F064; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1530528\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1531529\n"); + end + ReadData1E = 64'hC80FFFFFFBFF0000; + ReadData2E = 64'h43CEDFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hCBEEDFFFFC2308FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1532530\n"); + end + ReadData1E = 64'h3FF0000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'hBB50000101FFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1533531\n"); + end + ReadData1E = 64'h30F01FF000000000; + ReadData2E = 64'hBFAFFFFEFFFFFFEF; + ReadData3E = 64'hC32FD81EA8CF0AC3; + ans = 64'hC32FD81EA8CF0AC3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1534532\n"); + end + ReadData1E = 64'h43D377A0FDECB236; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1535533\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h3CA000001FDFFFFF; + ReadData3E = 64'h3CA01FEFFFFFFFFE; + ans = 64'h3CB80FF81FDFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1536534\n"); + end + ReadData1E = 64'hFFDED2893944F3D6; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h37E00000200000FF; + ans = 64'hBFFED2893944F3D2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1537535\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h45FFFFF7FFFFFDFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h460FFFF7FFFFFDFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1538536\n"); + end + ReadData1E = 64'h42DFFFFFFFB7FFFF; + ReadData2E = 64'hC1F00003FBFFFFFE; + ReadData3E = 64'hB7F001FFFFFFF7FE; + ans = 64'hC4E00003FBDBFFF5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1539537\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1540538\n"); + end + ReadData1E = 64'h3FBFC000003FFFFE; + ReadData2E = 64'h4021C817B02000C5; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1541539\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h3F40000000000403; + ans = 64'h3F40000000000C03; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1542540\n"); + end + ReadData1E = 64'h41DBFFFFBFFFFFFF; + ReadData2E = 64'hFFF000001007FFFF; + ReadData3E = 64'h4800000001FDFFFF; + ans = 64'hFFF800001007FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1543541\n"); + end + ReadData1E = 64'hC1D8000000000100; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hC1B7FFFFFF000100; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1544542\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h4001FFFFFDFFFFFF; + ReadData3E = 64'h3FD000009FFFFFFF; + ans = 64'h4013000007FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1545543\n"); + end + ReadData1E = 64'h400D5B44952386A8; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'hF63FFFFFFF00007F; + ans = 64'hF63FFFFFFF00007F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1546544\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h40300803FFFFFFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h40400803FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1547545\n"); + end + ReadData1E = 64'h4007FFFFFFFFC000; + ReadData2E = 64'h480FFFFF7FFFF7FE; + ReadData3E = 64'h37E0000040001FFF; + ans = 64'h4827FFFF9FFFB9FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1548546\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1549547\n"); + end + ReadData1E = 64'hBFEA5211A7119066; + ReadData2E = 64'hBFC00000000007F6; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00F2D6F72C77312; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1550548\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'hC02FFFFFFFFFFFFF; + ans = 64'hC02BFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1551549\n"); + end + ReadData1E = 64'h801FFFFFFFFEFFF6; + ReadData2E = 64'h43CFFFFFDDFFFFFF; + ReadData3E = 64'h1ECFFFFFB7FFFFFF; + ans = 64'h1ECFFFFFB7FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1552550\n"); + end + ReadData1E = 64'h2C70001000007FFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1553551\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h4D22E53BEEBB21E4; + ReadData3E = 64'h261FFE00000007FE; + ans = 64'h4D32E53BEEBB21E3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1554552\n"); + end + ReadData1E = 64'hBF3FFFFBFFFFFFFA; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'hBFAF7FFC00000000; + ans = 64'hBFB03FFDF0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1555553\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h401FFFF80000007E; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000009; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1556554\n"); + end + ReadData1E = 64'h4040000000001006; + ReadData2E = 64'hDC40080000080000; + ReadData3E = 64'h3FE00000003FFFDF; + ans = 64'hDC9008000008100E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1557555\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1558556\n"); + end + ReadData1E = 64'hC1FFFFFFFF00001E; + ReadData2E = 64'h3FEFFFFFFFDFEFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC1FFFFFFFED7F01C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1559557\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h6FCECD6E084BE6B3; + ans = 64'h6FCECD6E084BE6B3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1560558\n"); + end + ReadData1E = 64'h801FFFFFF8002000; + ReadData2E = 64'hC620000000000000; + ReadData3E = 64'h408FFFFD00000000; + ans = 64'h408FFFFD00000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1561559\n"); + end + ReadData1E = 64'h42C09CA8E8D5CAFC; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1562560\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'hC05FC0000000001F; + ReadData3E = 64'h8A9200000007FFFF; + ans = 64'hC06FC0000000001E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1563561\n"); + end + ReadData1E = 64'h3FB02000000007FE; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hBD300000807FFFFF; + ans = 64'h7FA02000000007FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1564562\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h37F7FFFFFFFFFEFE; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1565563\n"); + end + ReadData1E = 64'hBFDA40E0B0E0D4B9; + ReadData2E = 64'h002FFFFFFFFFFC40; + ReadData3E = 64'h40220A19239B0648; + ans = 64'h40220A19239B0648; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1566564\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1567565\n"); + end + ReadData1E = 64'h512FC0000000000E; + ReadData2E = 64'h380FFFFFFEFFFFDF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h494FBFFFFF01FFED; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1568566\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h259FFFFFFFFFFDFB; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1569567\n"); + end + ReadData1E = 64'h977FFFFFC0000400; + ReadData2E = 64'hB7FFFBFFFFFBFFFF; + ReadData3E = 64'h41E008007FFFFFFF; + ans = 64'h41E008007FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1570568\n"); + end + ReadData1E = 64'hFFF729473B70B2CA; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'hFFFF29473B70B2CA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1571569\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'hBB1FFFFFFFDFFFEF; + ReadData3E = 64'hC02FFFBFFFFFF800; + ans = 64'hC02FFFBFFFFFF800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1572570\n"); + end + ReadData1E = 64'h3C200101FFFFFFFF; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h801000000041FFFE; + ans = 64'h801000000041FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1573571\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h3FFFCBAA023AB655; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h400FCBAA023AB654; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1574572\n"); + end + ReadData1E = 64'h500FF7FFFFFFFDFE; + ReadData2E = 64'h05F0007FFFE00000; + ReadData3E = 64'h2E8FFFFFFBFFFEFE; + ans = 64'h2E8FFFFFFBFFFEFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1575573\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCBFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1576574\n"); + end + ReadData1E = 64'h3FF000000000023F; + ReadData2E = 64'h3FC0000003E00000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1577575\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hC7EF8000003FFFFF; + ans = 64'hC7EF8000003FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1578576\n"); + end + ReadData1E = 64'hC3E0000100080000; + ReadData2E = 64'h0021FFFFFFFFFFFE; + ReadData3E = 64'hBDF0000030000000; + ans = 64'hBDF0000030000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1579577\n"); + end + ReadData1E = 64'hC3D04000000001FF; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h43B0400000000200; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1580578\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h4067FFFFDFFFFFFF; + ReadData3E = 64'h37200FFFFFFFFF7F; + ans = 64'h4077FFFFDFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1581579\n"); + end + ReadData1E = 64'h7FDFFFFFF7FFDFFF; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hB145E9B958F45F17; + ans = 64'hFFCFFFFFF7FFDFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1582580\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h802BF5E009876CF5; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1583581\n"); + end + ReadData1E = 64'hBADFFFFF7FFFFDFF; + ReadData2E = 64'h4EC009FFFFFFFFFF; + ReadData3E = 64'h8007695B76059BED; + ans = 64'hC9B009FFBFD7FEFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1584582\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1585583\n"); + end + ReadData1E = 64'h0D2FEFBFFFFFFFFF; + ReadData2E = 64'hC14FE00000020000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1586584\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h43FEF44F1374A7FB; + ans = 64'h43FEF44F1374A7FB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1587585\n"); + end + ReadData1E = 64'hC3429D4ADA4E2E43; + ReadData2E = 64'hC7E462486CFB57A0; + ReadData3E = 64'h41C0000000EFFFFF; + ans = 64'h4B37B6F53DF5D1C8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1588586\n"); + end + ReadData1E = 64'h40300001FF7FFFFF; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'hC0400001FF800000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1589587\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h309FFFFFF7FFFFE0; + ReadData3E = 64'hC010001000003FFF; + ans = 64'hC010001000003FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1590588\n"); + end + ReadData1E = 64'hBFDFFFFFF000007F; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'h385003FFFFFF7FFF; + ans = 64'h3FFFFFFFF000007D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1591589\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'hC3C001FFFFFFFFDF; + ReadData3E = 64'hC010000000000001; + ans = 64'hC3D001FFFFFFFFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1592590\n"); + end + ReadData1E = 64'h4024003FFFFFFFFE; + ReadData2E = 64'h20C000001000003F; + ReadData3E = 64'h401B1C1250961932; + ans = 64'h401B1C1250961932; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1593591\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hC01FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1594592\n"); + end + ReadData1E = 64'hBFE03FFFF7FFFFFE; + ReadData2E = 64'h41F0C222A54CE0AF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC1E1052B278102DD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1595593\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h40B525E86B8687C1; + ans = 64'hC34FFFFFFFFFF56E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1596594\n"); + end + ReadData1E = 64'hFFE0000002000003; + ReadData2E = 64'h47FFFC00000007FF; + ReadData3E = 64'h93B0040000002000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1597595\n"); + end + ReadData1E = 64'h4060000200000400; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h7FE0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1598596\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'hC7F0001FFFFFDFFF; + ReadData3E = 64'hC3EFFFDFFFFF0000; + ans = 64'hC800001FFFFFDFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1599597\n"); + end + ReadData1E = 64'h3FDF6AC529BB8EAB; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'hB7F0000000000BFF; + ans = 64'hFFDF6AC529BB8EAA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1600598\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'h43D00000FFFFDFFF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h43E00000FFFFDFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1601599\n"); + end + ReadData1E = 64'h00118FA6A18D0211; + ReadData2E = 64'hB9CB631CAAC88ACA; + ReadData3E = 64'h408189271F3F3756; + ans = 64'h408189271F3F3756; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1602600\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1603601\n"); + end + ReadData1E = 64'h3F5F7FFFFBFFFFFF; + ReadData2E = 64'hC3E5B93A02ABD0B6; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1604602\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h43E0000002FFFFFF; + ans = 64'h43E0000002FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1605603\n"); + end + ReadData1E = 64'hBFEC24D37B848EAF; + ReadData2E = 64'h423FFFFFFF8001FE; + ReadData3E = 64'h3FEFFFD7FFFFFFFF; + ans = 64'hC23C24D37B12FD23; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1606604\n"); + end + ReadData1E = 64'hC0300001EFFFFFFE; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1607605\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h400000000000037F; + ReadData3E = 64'hC2BFFEFFFFFFFFFF; + ans = 64'hC2BFFEFFFFFFFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1608606\n"); + end + ReadData1E = 64'hC9D78FE04108C103; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'hC5DFFFFFFFFFFF81; + ans = 64'hC5DFFFFFFFFFFF81; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1609607\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hC3C7BA1AC94984C2; + ReadData3E = 64'h8010000000000001; + ans = 64'hC3D7BA1AC94984C1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1610608\n"); + end + ReadData1E = 64'hBD82000000000002; + ReadData2E = 64'hBFA1E91B8431F9BB; + ReadData3E = 64'hC3D4400000000000; + ans = 64'hC3D4400000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1611609\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h3CBFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1612610\n"); + end + ReadData1E = 64'h7FF540A4ACF9F6E9; + ReadData2E = 64'hF1A0000200000FFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h7FFD40A4ACF9F6E9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1613611\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h3FEFFFE000000008; + ans = 64'h3FF7FFF000000004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1614612\n"); + end + ReadData1E = 64'h41D0240000000000; + ReadData2E = 64'h3CA0220000000000; + ReadData3E = 64'h3F7FFFFFFF7FFFFB; + ans = 64'h3F800010460C7FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1615613\n"); + end + ReadData1E = 64'hA9633A668152113F; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1616614\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h40300000000FFF7F; + ReadData3E = 64'h4630017FFFFFFFFF; + ans = 64'h4630017FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1617615\n"); + end + ReadData1E = 64'hC730D1F87200010C; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h43DFFF7FFFFF8000; + ans = 64'hC720D1F87200010C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1618616\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h406FFFEFFFF80000; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1619617\n"); + end + ReadData1E = 64'h3FD0000000100000; + ReadData2E = 64'h38000002000007FF; + ReadData3E = 64'h7FD000080000FFFF; + ans = 64'h7FD000080000FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1620618\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1621619\n"); + end + ReadData1E = 64'hC2BD8EEBC237178F; + ReadData2E = 64'hC01FFFFFFFFF7FFC; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h42ED8EEBC236A130; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1622620\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000800000; + ans = 64'h40140000001FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1623621\n"); + end + ReadData1E = 64'h40317FFFFFFFFFFF; + ReadData2E = 64'h175FFFFFFE01FFFF; + ReadData3E = 64'hD074AE7A36BC5E51; + ans = 64'hD074AE7A36BC5E51; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1624622\n"); + end + ReadData1E = 64'h401000000003EFFE; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'h403000000003EFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1625623\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hC02FFFDFFFFFFFBF; + ReadData3E = 64'h334FFFC100000000; + ans = 64'hC03FFFDFFFFFFFBD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1626624\n"); + end + ReadData1E = 64'hC02FFFFEFFFFFFEF; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hB800000000000202; + ans = 64'hC04FFFFEFFFFFFF1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1627625\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h52AFFFE003FFFFFF; + ReadData3E = 64'h4000000000000001; + ans = 64'h52BFFFE003FFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1628626\n"); + end + ReadData1E = 64'h570FFFFFF8000010; + ReadData2E = 64'h401027FFFFFFFFFF; + ReadData3E = 64'hC3D18CAD8F3F40EC; + ans = 64'h573027FFFBF60007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1629627\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h434FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1630628\n"); + end + ReadData1E = 64'hFE7007FFFDFFFFFF; + ReadData2E = 64'h7FDFFFFFFFFFF03E; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1631629\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'hC1FFF80000001FFF; + ans = 64'h435FFFFF801FFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1632630\n"); + end + ReadData1E = 64'h3F600000000001FF; + ReadData2E = 64'hC03FFE0000001FFF; + ReadData3E = 64'h403F800007FFFFFE; + ans = 64'h403F700107FFFFEC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1633631\n"); + end + ReadData1E = 64'h403891A801BC540D; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1634632\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hC015AEF24CD87B81; + ReadData3E = 64'hA0CC000000000800; + ans = 64'hC025AEF24CD87B80; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1635633\n"); + end + ReadData1E = 64'hBFD224882CB6537B; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h3F8FFFFFFFFFFFBB; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1636634\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h3C8FFFFFFBEFFFFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFCFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1637635\n"); + end + ReadData1E = 64'hC001FFFFFFEFFFFE; + ReadData2E = 64'hB80F9FFFFFFFFFFF; + ReadData3E = 64'h7FDFFFFFFFFE0FFF; + ans = 64'h7FDFFFFFFFFE0FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1638636\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1639637\n"); + end + ReadData1E = 64'h3FD00000200007FF; + ReadData2E = 64'h3FBFFFFFE00007FF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1640638\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hBFE3FAECF8518938; + ans = 64'hBFE3FAECF8518938; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1641639\n"); + end + ReadData1E = 64'hC8FC000000000007; + ReadData2E = 64'h3F100003FC000000; + ReadData3E = 64'h88D56B0A0965A937; + ans = 64'hC81C0006F9000007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1642640\n"); + end + ReadData1E = 64'h40DE10966A4D957C; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1643641\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hFFDFE00000000001; + ReadData3E = 64'h999FC3752476AD98; + ans = 64'hFFEFDFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1644642\n"); + end + ReadData1E = 64'hC7FFDFFFFFFFFBFF; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFF001FFF; + ans = 64'hC34FFFFFFF001FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1645643\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h438FFFF8000007FF; + ReadData3E = 64'h0000000000000001; + ans = 64'h439FFFF8000007FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1646644\n"); + end + ReadData1E = 64'hC020020000003FFF; + ReadData2E = 64'h380902EB1C23CFA9; + ReadData3E = 64'hBFE0000200000200; + ans = 64'hBFE0000200000200; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1647645\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hBCBFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1648646\n"); + end + ReadData1E = 64'hBFD0400000007FFE; + ReadData2E = 64'hA32401FFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1649647\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'hC1D0967862E2ED92; + ans = 64'hC1D096786322ED92; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1650648\n"); + end + ReadData1E = 64'h43C3BBA1A9FBA8AB; + ReadData2E = 64'hC3EE6097AB4BAED9; + ReadData3E = 64'h713FFFFF8000000F; + ans = 64'h713FFFFF8000000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1651649\n"); + end + ReadData1E = 64'hC07FD7FFFFFFFFFF; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h406FD7FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1652650\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hC7E3FFFFFF7FFFFF; + ReadData3E = 64'h47FFFFFC00000010; + ans = 64'h47E7FFF801000024; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1653651\n"); + end + ReadData1E = 64'hC3CFB7FFFFFFFFFF; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'hC06F03FFFFFFFFFF; + ans = 64'h43CFB7FFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1654652\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hC01395DB365F758F; + ReadData3E = 64'h4340000000000001; + ans = 64'h433FFFFFFFFFFFF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1655653\n"); + end + ReadData1E = 64'h41FFFFFFFFFFBFDF; + ReadData2E = 64'h10A000000003FDFE; + ReadData3E = 64'h41EFFC000001FFFF; + ans = 64'h41EFFC000001FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1656654\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC350000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1657655\n"); + end + ReadData1E = 64'hC3EFFFFF80000003; + ReadData2E = 64'h3FC2C6F34445DDB8; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC3C2C6F2F92A10A9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1658656\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hBC4FFFE00FFFFFFF; + ans = 64'hC010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1659657\n"); + end + ReadData1E = 64'hC3F000000000007F; + ReadData2E = 64'hC1CFE00000003FFE; + ReadData3E = 64'hC388000003FFFFFF; + ans = 64'h45CFDFFFFFFEC0FB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1660658\n"); + end + ReadData1E = 64'hC020002000000007; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1661659\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'h002FF7FFFFE00000; + ReadData3E = 64'h3FC000003FFFFBFE; + ans = 64'h3FC000003FFFFBFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1662660\n"); + end + ReadData1E = 64'h3FE003FFFFDFFFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hC2D5FDE1C4102379; + ans = 64'hC2D5FDE1C4102479; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1663661\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hBF8DFCE75ADBD890; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF077F39D6B6F63; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1664662\n"); + end + ReadData1E = 64'hBF12C14B8BCF0940; + ReadData2E = 64'hBFF000000007FFFC; + ReadData3E = 64'hD97312CEA1CB43A2; + ans = 64'hD97312CEA1CB43A2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1665663\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hC35FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1666664\n"); + end + ReadData1E = 64'h65860D434FF1936A; + ReadData2E = 64'h4137FFFFFFE00000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h66D089F27BDF214C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1667665\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'hBF2FFFE00000007E; + ans = 64'hFFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1668666\n"); + end + ReadData1E = 64'h43E001000000007F; + ReadData2E = 64'h380FFFFFE3FFFFFE; + ReadData3E = 64'hB8601F7FFFFFFFFE; + ans = 64'h3C0000FFF1FF207E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1669667\n"); + end + ReadData1E = 64'h3FEA42FDC490CC1F; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'hFFEA42FDC490CC1D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1670668\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hC066B25D2D388FBA; + ReadData3E = 64'h40F000007BFFFFFF; + ans = 64'h40EFD29C3DA58EDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1671669\n"); + end + ReadData1E = 64'h42D00000005FFFFF; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h277ECB97E67CD270; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1672670\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFE; + ReadData2E = 64'hBFB3FFFFFFFDFFFE; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hBFC3FFFFFFFDFFF9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1673671\n"); + end + ReadData1E = 64'h4342CB9E293CBD99; + ReadData2E = 64'h4893FFFF7FFFFFFF; + ReadData3E = 64'h3FBFFFFF03FFFFFE; + ans = 64'h4BE77E851D2EFBB4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1674672\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1675673\n"); + end + ReadData1E = 64'h4100000000408000; + ReadData2E = 64'h35C00000000040FF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1676674\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'hC03007FFFFFFFF7F; + ans = 64'hC03007FFFFFFFF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1677675\n"); + end + ReadData1E = 64'h4800000002000040; + ReadData2E = 64'hC3F1788B90E98D2D; + ReadData3E = 64'hC0300003FFFFEFFE; + ans = 64'hCC01788B93189EE5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1678676\n"); + end + ReadData1E = 64'h00200000083FFFFE; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1679677\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h801FFFFFFBE00000; + ReadData3E = 64'h3CD00000001EFFFF; + ans = 64'h3CD00000001EFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1680678\n"); + end + ReadData1E = 64'h3E3FF7FFFFFFFFF7; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h7FF000207FFFFFFF; + ans = 64'h7FF800207FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1681679\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'hC7EF000008000000; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1682680\n"); + end + ReadData1E = 64'h43FFFFFFFFFFFCFF; + ReadData2E = 64'hC1CFFFFFBFF7FFFF; + ReadData3E = 64'hC22FFFEFFFFE0000; + ans = 64'hC5DFFFFFBFF7FCFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1683681\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1684682\n"); + end + ReadData1E = 64'hB133C43708BA5FA2; + ReadData2E = 64'h3CAFFBFFBFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1685683\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hC011000000FFFFFF; + ans = 64'hC00A000001FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1686684\n"); + end + ReadData1E = 64'hC014CA428ABB6017; + ReadData2E = 64'h801F7FFEFFFFFFFF; + ReadData3E = 64'h413446DDD2EABE4B; + ans = 64'h413446DDD2EABE4B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1687685\n"); + end + ReadData1E = 64'hC1C00000000007FE; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'hC1C00000000007FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1688686\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h42CFFFFDFFFFBFFF; + ReadData3E = 64'hB3DFFFFFFFE007FF; + ans = 64'h42DFFFFDFFFFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1689687\n"); + end + ReadData1E = 64'h41CFFEFFFFFFFFFF; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'hC020FFFFFFFFFF7F; + ans = 64'h41CFFEFFFBBFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1690688\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'hFFFFFFDFFFFFFFFE; + ReadData3E = 64'hC010000000000001; + ans = 64'hFFFFFFDFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1691689\n"); + end + ReadData1E = 64'hC030007FFFFFFFFF; + ReadData2E = 64'hBF8FFFFFDFFC0000; + ReadData3E = 64'hC770003FFFF7FFFE; + ans = 64'hC770003FFFF7FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1692690\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4027FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1693691\n"); + end + ReadData1E = 64'h002FFFFFBFFFFFFF; + ReadData2E = 64'hC010000000003FF6; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1694692\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h2AF0000001FBFFFF; + ans = 64'h401FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1695693\n"); + end + ReadData1E = 64'h7FF01FFFFFF7FFFF; + ReadData2E = 64'h4D10000002000FFF; + ReadData3E = 64'hBFFFFFFFEFFF7FFE; + ans = 64'h7FF81FFFFFF7FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1696694\n"); + end + ReadData1E = 64'hBFEFFFFFFE1FFFFE; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1697695\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h0009FDBFFFE61B1D; + ReadData3E = 64'h3F375F2FC9111A8B; + ans = 64'h3F375F2FC9111A8B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1698696\n"); + end + ReadData1E = 64'h3B5FFFFFFFFDEFFE; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'hBFFFFFEFFEFFFFFF; + ans = 64'hBFFFFFEFFEFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1699697\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h4111FFFFFFFFFFF7; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h41220000FFFFFFF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1700698\n"); + end + ReadData1E = 64'h37F125D869FABC96; + ReadData2E = 64'h801FFFFC001FFFFF; + ReadData3E = 64'hC02FFFFE1FFFFFFF; + ans = 64'hC02FFFFE1FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1701699\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h435FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1702700\n"); + end + ReadData1E = 64'h40100000000FC000; + ReadData2E = 64'h5DCFFFFFFF7F7FFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1703701\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hC3E00017FFFFFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1704702\n"); + end + ReadData1E = 64'hC01FFFFFFFFEFBFF; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hB0A0004000040000; + ans = 64'hC04FFFFFFFFEFBFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1705703\n"); + end + ReadData1E = 64'h3FD9BCB9B01F0E44; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'hC000000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1706704\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h404F8000000000FF; + ReadData3E = 64'hC033B0C609F14C18; + ans = 64'h405A93CE7D83ADF9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1707705\n"); + end + ReadData1E = 64'h43CFFFFFF80001FF; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h4070000002000FFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1708706\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h480FFFFFC0000010; + ReadData3E = 64'h8010000000000001; + ans = 64'h481FFFFFC0000010; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1709707\n"); + end + ReadData1E = 64'hA21FFF7FFFFFFE00; + ReadData2E = 64'hBF60000000400001; + ReadData3E = 64'hBCAFFFCFFFFFFFFF; + ans = 64'hBCAFFFCFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1710708\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h0000000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1711709\n"); + end + ReadData1E = 64'h01F000000200003F; + ReadData2E = 64'hBFECF3B454904764; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1712710\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h41DFFFFFFFC000FF; + ans = 64'h41DFFFFFFFC000FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1713711\n"); + end + ReadData1E = 64'h8020000048000000; + ReadData2E = 64'h377E703F25890066; + ReadData3E = 64'hFFDFFFC00000001F; + ans = 64'hFFDFFFC00000001F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1714712\n"); + end + ReadData1E = 64'hBF300000007FFFF7; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1715713\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h43E01FFFFFFFEFFF; + ReadData3E = 64'h3FF9768EAF638E70; + ans = 64'h43F01FFFFFFFEFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1716714\n"); + end + ReadData1E = 64'h62E7E7A1E9ABB9B2; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h000040000000001E; + ans = 64'hDFA7E7A1E9ABB9B1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1717715\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'hC1CFFFFFFC000001; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1718716\n"); + end + ReadData1E = 64'hC80FF003FFFFFFFF; + ReadData2E = 64'h42C30141269CEFFC; + ReadData3E = 64'hBE0FFFFFFF00007E; + ans = 64'hCAE2F7C2E631C657; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1719717\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1720718\n"); + end + ReadData1E = 64'h43EFFFFBFF7FFFFF; + ReadData2E = 64'h3F33FFFFFFFFFFF0; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h4333FFFD7FAFFFEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1721719\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'h37E002000000FFFF; + ans = 64'hBFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1722720\n"); + end + ReadData1E = 64'hB81000000010001F; + ReadData2E = 64'hBCAFFFF7FFFEFFFF; + ReadData3E = 64'h7FFFFFFFFDFFFFFB; + ans = 64'h7FFFFFFFFDFFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1723721\n"); + end + ReadData1E = 64'h3FB0070000000000; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'hBFB006FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1724722\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'hC3DF7FFFFFFFFE00; + ReadData3E = 64'hC385FAAD034C1D09; + ans = 64'hC3EFD7EAB40D2E74; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1725723\n"); + end + ReadData1E = 64'h434847DE3AD0C1EC; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h43E000100007FFFF; + ans = 64'h43DFE7D821D52F3C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1726724\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'hBE0FF8000FFFFFFF; + ReadData3E = 64'h4000000000000001; + ans = 64'h3FFFFFFFFF802002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1727725\n"); + end + ReadData1E = 64'h4001FFFFFFFFFFFD; + ReadData2E = 64'hD9AFE0FFFFFFFFFE; + ReadData3E = 64'hFFFD34B83B383248; + ans = 64'hFFFD34B83B383248; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1728726\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC020000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1729727\n"); + end + ReadData1E = 64'hC3E0007FFFF00000; + ReadData2E = 64'h3FF000000003FFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hC3E0007FFFF4001E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1730728\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'hC80FFFFFFFDFF7FF; + ans = 64'hC80FFFFFFFDFF7FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1731729\n"); + end + ReadData1E = 64'h4340000200001000; + ReadData2E = 64'h3FCEFFFBFFFFFFFE; + ReadData3E = 64'h47F0000FFFEFFFFF; + ans = 64'h47F0000FFFEFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1732730\n"); + end + ReadData1E = 64'hC060000000000000; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'hC33FFFFFFFFFFC00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1733731\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h31FDE388523C96C3; + ReadData3E = 64'hC03001000007FFFE; + ans = 64'hC03001000007FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1734732\n"); + end + ReadData1E = 64'h51A00003FFFFFFFF; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'hB8864AAF975010EF; + ans = 64'hD4F0000400000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1735733\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'hFBFFBFFFFFF00000; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hFC0FBFFFFFF00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1736734\n"); + end + ReadData1E = 64'h3FAFE3FFFFFFFFFF; + ReadData2E = 64'h3FD000000000041E; + ReadData3E = 64'h41D110821C120A55; + ans = 64'h41D110821C130975; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1737735\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1738736\n"); + end + ReadData1E = 64'hC03FFFC000FFFFFF; + ReadData2E = 64'h401C0000003FFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1739737\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h4263DD4ADB450DB9; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1740738\n"); + end + ReadData1E = 64'hC03FFFFAFFFFFFFF; + ReadData2E = 64'hC1E9C6094D883BB9; + ReadData3E = 64'h05B0208000000000; + ans = 64'h4239C6054696C79B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1741739\n"); + end + ReadData1E = 64'h802FFFE0FFFFFFFF; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1742740\n"); + end + ReadData1E = 64'h4000000000000000; + ReadData2E = 64'h3FFFFFFFF0000100; + ReadData3E = 64'hC0252BA622B10B8B; + ans = 64'hC01A574C4D621696; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1743741\n"); + end + ReadData1E = 64'h3810000020000FFF; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h800FFDFFFFFFFBFE; + ans = 64'h800FFDFFFFFFFBFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1744742\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hB170000002000FFE; + ReadData3E = 64'h0000000000000001; + ans = 64'hB180000002000FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1745743\n"); + end + ReadData1E = 64'h3C033935327BCC01; + ReadData2E = 64'hBF9FFDFFFFFFFF80; + ReadData3E = 64'hC3D2386ABE279F79; + ans = 64'hC3D2386ABE279F79; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1746744\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h0010000000000004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1747745\n"); + end + ReadData1E = 64'hBC2FFE01FFFFFFFF; + ReadData2E = 64'hBE3FDFFFFFFFFE00; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1748746\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h800F800080000000; + ans = 64'h00283FFFC0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1749747\n"); + end + ReadData1E = 64'hBFE001000000003F; + ReadData2E = 64'hC00FFFFFFFEFDFFE; + ReadData3E = 64'hC54FFB7FFFFFFFFE; + ans = 64'hC54FFB7FFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1750748\n"); + end + ReadData1E = 64'h4340004000002000; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h3FF0004000002001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1751749\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h3FF0026ACF620192; + ReadData3E = 64'hC064049D61CB4027; + ans = 64'hC063C493B68DB821; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1752750\n"); + end + ReadData1E = 64'hC36FFEFFFC000000; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h41FFFFFFFFFDFBFF; + ans = 64'hC34FFEFEFC000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1753751\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h80203FFFBFFFFFFE; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1754752\n"); + end + ReadData1E = 64'h41E31B38A68C8699; + ReadData2E = 64'h7FE3126A3EB04F36; + ReadData3E = 64'h401FFFFFFFDFFFFC; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1755753\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1756754\n"); + end + ReadData1E = 64'h3FB02400AE2D86DB; + ReadData2E = 64'hC1E7627DE59FB15A; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC1A7971C7E75FBE5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1757755\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'hA5AFFFFFBF7FFFFE; + ans = 64'h4000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1758756\n"); + end + ReadData1E = 64'hAD3FFFFFFFFFFFDA; + ReadData2E = 64'hBFFFC947C6F84A5E; + ReadData3E = 64'h41C1FFFFFFFFFFBF; + ans = 64'h41C1FFFFFFFFFFBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1759757\n"); + end + ReadData1E = 64'hC01000000103FFFF; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1760758\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hC0BFFFFFFFBBFFFF; + ReadData3E = 64'h380FFFF00000000E; + ans = 64'hC0CFFFFFFFBC0001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1761759\n"); + end + ReadData1E = 64'h4805A668FABFA310; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'h3FFC7E58A489F45D; + ans = 64'h4815A668FABFA30F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1762760\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h4032EB7F708E45BF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h40426B7F708E45C0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1763761\n"); + end + ReadData1E = 64'h37EFFFFFFF8001FE; + ReadData2E = 64'hC80010000FFFFFFE; + ReadData3E = 64'hBFEBDD7ECECF6289; + ans = 64'hC007075FC37399A0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1764762\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4024000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1765763\n"); + end + ReadData1E = 64'h000EFFFFFFFDFFFF; + ReadData2E = 64'hB772000010000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h800FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1766764\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hAF60CC71B6A69EA2; + ans = 64'h4020000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1767765\n"); + end + ReadData1E = 64'h4015C82894F166D3; + ReadData2E = 64'h3770001FFFFEFFFF; + ReadData3E = 64'h47E17E3BC336303D; + ans = 64'h47E17E3BC336303D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1768766\n"); + end + ReadData1E = 64'hC00556E7D2A3D357; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h4010000000000000; + ans = 64'hC35556E7D2A3D356; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1769767\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hC3EFFFFB7FFFFFFF; + ReadData3E = 64'h7FEFFC003FFFFFFE; + ans = 64'h7FEFFC003FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1770768\n"); + end + ReadData1E = 64'hC020C1CDB64B59E2; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h4071462917526862; + ans = 64'hC380C1CDB64B59D9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1771769\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hCC3000000000FFDE; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hCC4000000000FFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1772770\n"); + end + ReadData1E = 64'hC01FFFFE00400000; + ReadData2E = 64'h4020000001FFFFEF; + ReadData3E = 64'hC090000003FFFFBF; + ans = 64'hC090FFFFF421FFBC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1773771\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1774772\n"); + end + ReadData1E = 64'hC80FFFFFFF800FFF; + ReadData2E = 64'h802FF000000003FE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1775773\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h41D0010FFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1776774\n"); + end + ReadData1E = 64'h4000008000FFFFFF; + ReadData2E = 64'h4342D2FD26AC2BE0; + ReadData3E = 64'h3F4401FFFFFFFFFE; + ans = 64'h4352D393BFC29113; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1777775\n"); + end + ReadData1E = 64'hA4301FFFFFFDFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1778776\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hB7BFEFFF7FFFFFFE; + ReadData3E = 64'h43D0000020001FFF; + ans = 64'h43D0000020001FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1779777\n"); + end + ReadData1E = 64'hFFF000000010007F; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hB8100800001FFFFF; + ans = 64'hFFF800000010007F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1780778\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h3F000FFFFFFFDFFF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1781779\n"); + end + ReadData1E = 64'h3DE0500000000000; + ReadData2E = 64'h4010003FFFFFFF80; + ReadData3E = 64'h4CA0000000007FFD; + ans = 64'h4CA0000000007FFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1782780\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1783781\n"); + end + ReadData1E = 64'h41E000203FFFFFFE; + ReadData2E = 64'h4BE4BCB906B0C148; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4DD4BCE2D315B2C2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1784782\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h41FFFFFF80000001; + ans = 64'h41FFFFFF80000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1785783\n"); + end + ReadData1E = 64'h41D1F7FFFFFFFFFE; + ReadData2E = 64'hFFE79A965B758F19; + ReadData3E = 64'hFFFAD64EE0624791; + ans = 64'hFFFAD64EE0624791; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1786784\n"); + end + ReadData1E = 64'hC0EFBFFFFFFFFFDF; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h0010000000000000; + ans = 64'h3DAFBFFFFFFFFFDD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1787785\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h7FFFFFBFFFFBFFFE; + ReadData3E = 64'hBFC00FFFFEFFFFFF; + ans = 64'h7FFFFFBFFFFBFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1788786\n"); + end + ReadData1E = 64'hC26DFC1FCCC4B142; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'hC09FFFFEFFEFFFFF; + ans = 64'h424DFC1FC8C4B164; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1789787\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h3F8FFFFFBFFFBFFE; + ReadData3E = 64'hC010000000000001; + ans = 64'hC00FC00000800082; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1790788\n"); + end + ReadData1E = 64'hC3ECC4247CF450FE; + ReadData2E = 64'hC58FF80000001000; + ReadData3E = 64'hC0300000010000FE; + ans = 64'h498CBCF373D5224C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1791789\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401BFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1792790\n"); + end + ReadData1E = 64'h3FEFFFFE1FFFFFFF; + ReadData2E = 64'h70C0010007FFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h70C000FF17F0FF86; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1793791\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h43EFFFFFFFFFFFF0; + ans = 64'h43EFFFFFFFFFFFF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1794792\n"); + end + ReadData1E = 64'hBFBC000001FFFFFE; + ReadData2E = 64'h438400000007FFFF; + ReadData3E = 64'h40367A745541CCE4; + ans = 64'hC35180000146FFF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1795793\n"); + end + ReadData1E = 64'hBF8FFFFFFEFFFFFB; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1796794\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hC02A8E22DC4E804C; + ReadData3E = 64'hBEC000000C000000; + ans = 64'hC03A8E22FC4E8066; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1797795\n"); + end + ReadData1E = 64'h4A1C08A3C0EEC3AA; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h0017ACDCB8555271; + ans = 64'hCA2C08A3C0EEC3AA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1798796\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'h53000000001FFBFF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h53100000001FFC00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1799797\n"); + end + ReadData1E = 64'hC09EFFFFFFFFFDFE; + ReadData2E = 64'h3FC0807FFFFFFFFF; + ReadData3E = 64'hC3DD576263E90342; + ans = 64'hC3DD576263E90342; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1800798\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hC022000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1801799\n"); + end + ReadData1E = 64'h00200000001F0000; + ReadData2E = 64'h52C8BA19885B1EFB; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1802800\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hBFE000100000003F; + ans = 64'hC030800080000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1803801\n"); + end + ReadData1E = 64'hC2B0000000201FFF; + ReadData2E = 64'h3800000000DFFFFE; + ReadData3E = 64'hFFD00003FFFFFFFF; + ans = 64'hFFD00003FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1804802\n"); + end + ReadData1E = 64'h3FDBCBF943946858; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'hC32BCBF94394685E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1805803\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hC1FF400000000000; + ReadData3E = 64'hFFFFFFFF7FFFFFEF; + ans = 64'hFFFFFFFF7FFFFFEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1806804\n"); + end + ReadData1E = 64'h40200001FFC00000; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h3FDFCFFFFFFFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1807805\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hBFAFFFFF7FFFE000; + ReadData3E = 64'h8010000000000001; + ans = 64'hBFBFFFFF7FFFE002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1808806\n"); + end + ReadData1E = 64'h480C25C4D44C4F67; + ReadData2E = 64'h37F1FFFFC0000000; + ReadData3E = 64'hC6556F6E75881036; + ans = 64'hC6556F6E75881036; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1809807\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1810808\n"); + end + ReadData1E = 64'hBCAFFFFFFE004000; + ReadData2E = 64'hB8707C2A051E19E2; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1811809\n"); + end + ReadData1E = 64'h4000000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'hB7E00000000006FF; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1812810\n"); + end + ReadData1E = 64'hC00FFF7FFFFFFF80; + ReadData2E = 64'hBCAFFFDFFF7FFFFE; + ReadData3E = 64'h3B0FFFFFFFFE00FE; + ans = 64'h3CCFFF600200017E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1813811\n"); + end + ReadData1E = 64'hC57FF83FFFFFFFFF; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1814812\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hFA71FC0000000000; + ReadData3E = 64'hBE2FDFFFFFF00000; + ans = 64'hFA91FBFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1815813\n"); + end + ReadData1E = 64'h3E80000107FFFFFF; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h3F8262AA0619BFFE; + ans = 64'h3F8262AA0619BFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1816814\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hCDD0000000007C00; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1817815\n"); + end + ReadData1E = 64'hBFE00103FFFFFFFE; + ReadData2E = 64'h43D8A39EEB49E6B9; + ReadData3E = 64'h4020000000200002; + ans = 64'hC3C8A52F4E205627; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1818816\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1819817\n"); + end + ReadData1E = 64'hBBE0000000FEFFFF; + ReadData2E = 64'hBFDBFFFFFFF00000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1820818\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h37F0000027FFFFFF; + ans = 64'h3CC0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1821819\n"); + end + ReadData1E = 64'hC03017FFFFFFFFFF; + ReadData2E = 64'h3E6CB8C74CD85E60; + ReadData3E = 64'hC0200021FFFFFFFF; + ans = 64'hC02000221CE3DC77; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1822820\n"); + end + ReadData1E = 64'hC15FFFFFFF7FBFFF; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'hC13FFFFFFF7FBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1823821\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hC1807FFFFFFFFF7F; + ReadData3E = 64'h3FB0003FFFFFE000; + ans = 64'hC1A07FFFFFDFFEFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1824822\n"); + end + ReadData1E = 64'h3E75D7683DCF4BFF; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hD900000100000001; + ans = 64'hD900000100000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1825823\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h4CCDBCA2AB8B0301; + ReadData3E = 64'h4000000000000001; + ans = 64'h4CEDBCA2AB8B0300; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1826824\n"); + end + ReadData1E = 64'hB8F644176C31EEB3; + ReadData2E = 64'hC1FFDFFFFF800000; + ReadData3E = 64'hBCA01000000001FF; + ans = 64'hBCA00FFFFA748D2A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1827825\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h3970000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1828826\n"); + end + ReadData1E = 64'hBFB0080FFFFFFFFE; + ReadData2E = 64'h000000000001FFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h001FFFFFFFFFDFEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1829827\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h3BA80000000001FF; + ans = 64'h4010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1830828\n"); + end + ReadData1E = 64'hB80FFDFFFEFFFFFE; + ReadData2E = 64'hC1E0000004000100; + ReadData3E = 64'h3CAFFFEBFFFFFFFE; + ans = 64'h3CAFFFEC000003FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1831829\n"); + end + ReadData1E = 64'hC7FDFFFFFFFC0000; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hC340000000000000; + ans = 64'hC80DFFFFFFFBFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1832830\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hBEFB871B00B0279E; + ReadData3E = 64'hC0041FCDE04DEB4C; + ans = 64'hC0042004EE83ECAC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1833831\n"); + end + ReadData1E = 64'hBFC000000200FFFF; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'hBE5FFFFFFFF801FE; + ans = 64'hBFE000001200FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1834832\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h403ADB865D5B9CE1; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h405ACB865D5B9CE0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1835833\n"); + end + ReadData1E = 64'hBD2FFFFFFFE7FFFF; + ReadData2E = 64'h7FE000000001EFFF; + ReadData3E = 64'hC7CFFFFC07FFFFFF; + ans = 64'hFD1FFFFFFFEBDFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1836834\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h40403FFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1837835\n"); + end + ReadData1E = 64'h3807FFFFFFFFFFF7; + ReadData2E = 64'h32700000200007FF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1838836\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h6A11972EC069F094; + ans = 64'h6A11972EC069F094; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1839837\n"); + end + ReadData1E = 64'hC34AA4AD5429CD0E; + ReadData2E = 64'h002FFFFC00FFFFFE; + ReadData3E = 64'h0010100000200000; + ans = 64'h838AA4AA006947F2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1840838\n"); + end + ReadData1E = 64'hC3E0000200000001; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hC740000200000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1841839\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h3AB007FFFF7FFFFF; + ReadData3E = 64'h40DFFFFFFFFF0FFF; + ans = 64'h40DFFFFFFFFF0FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1842840\n"); + end + ReadData1E = 64'h3FA90870E9277135; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'h3FF0400001000000; + ans = 64'h7F990870E9277137; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1843841\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h3E03BDA4382ACF89; + ReadData3E = 64'h0000000000000001; + ans = 64'h3E23BDA4382ACF88; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1844842\n"); + end + ReadData1E = 64'h3EA0003FFBFFFFFF; + ReadData2E = 64'h801FFFFFF000007F; + ReadData3E = 64'h3A8020000000FFFF; + ans = 64'h3A8020000000FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1845843\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1846844\n"); + end + ReadData1E = 64'h51DFFE003FFFFFFF; + ReadData2E = 64'h7FF00007FFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h7FF80007FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1847845\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h80100000001BFFFE; + ans = 64'h80100000001BFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1848846\n"); + end + ReadData1E = 64'hC1D1DFFFFFFFFFFF; + ReadData2E = 64'h3E700FFFFFFF7FFF; + ReadData3E = 64'hC3F016951344FB34; + ans = 64'hC3F016951344FB34; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1849847\n"); + end + ReadData1E = 64'hC0DFFFFFFFFFE400; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1850848\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h3FFFFFFBFFFFFFFE; + ReadData3E = 64'hC80FFFFFFBFC0000; + ans = 64'hC80FFFFFFBFC0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1851849\n"); + end + ReadData1E = 64'hB65FFFFFFFFFE000; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h3060000800040000; + ans = 64'h3060000800040000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1852850\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hC28FF9FFFFFFFFFE; + ReadData3E = 64'h4340000000000001; + ans = 64'h433FF00300000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1853851\n"); + end + ReadData1E = 64'hC1D0000007FFE000; + ReadData2E = 64'hC010000000080004; + ReadData3E = 64'hA5B0001FFFFFFFFF; + ans = 64'h41F000000807E004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1854852\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1855853\n"); + end + ReadData1E = 64'h43F00003DFFFFFFE; + ReadData2E = 64'h43400001FF7FFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h47400005DF807BDE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1856854\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFF00000400; + ans = 64'h401FFFFF000003FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1857855\n"); + end + ReadData1E = 64'hC800001FF7FFFFFF; + ReadData2E = 64'h3EFFFFFFFFFFDFDF; + ReadData3E = 64'h45DFFFFFFFFBFFBF; + ans = 64'hC710001DF7FFEFEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1858856\n"); + end + ReadData1E = 64'h403FFFFEFFFC0000; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1859857\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hC14FFFFFFFDFFFFE; + ReadData3E = 64'h42D4CF54F7F892AB; + ans = 64'h42D4CF54B7F892AB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1860858\n"); + end + ReadData1E = 64'h37E000000400000F; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hC80BD0E420FDB3B7; + ans = 64'hC80BD0E420FDB3B7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1861859\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hBE3FFFFFFFEFFFFE; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000008000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1862860\n"); + end + ReadData1E = 64'h53AFF00000000020; + ReadData2E = 64'hA4BFFFFFF80001FF; + ReadData3E = 64'h37FFFF8000000000; + ans = 64'hB87FD0007804021E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1863861\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1864862\n"); + end + ReadData1E = 64'h40000000FFFFDFFF; + ReadData2E = 64'hC3EF6606F8217640; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC3FF6608EE81A6F4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1865863\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'hBDF0000000401FFE; + ans = 64'hC02000000001FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1866864\n"); + end + ReadData1E = 64'h37FFFFFEFFEFFFFE; + ReadData2E = 64'h4691FFFFFFFFFFEF; + ReadData3E = 64'h3F8FFFFFFF820000; + ans = 64'h3F900023FFBFDFEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1867865\n"); + end + ReadData1E = 64'h068FF1FFFFFFFFFF; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1868866\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h4340200000000400; + ReadData3E = 64'hA51FFFFF003FFFFF; + ans = 64'h43602000000003FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1869867\n"); + end + ReadData1E = 64'h43E0002000000FFF; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hB81FEFFFFFFBFFFF; + ans = 64'hC400002000000FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1870868\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h3F64BF920713BFD1; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3F84BF920713C010; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1871869\n"); + end + ReadData1E = 64'hC00000000001FFFF; + ReadData2E = 64'h41F001000000FFFE; + ReadData3E = 64'hC024200000000000; + ans = 64'hC20001000053801D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1872870\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC03FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1873871\n"); + end + ReadData1E = 64'hC80FBEFFFFFFFFFF; + ReadData2E = 64'h40B5C30F462D3F60; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC8D596DB0F26B377; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1874872\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h482FFFFFF7F00000; + ans = 64'h482FFFFFF7F00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1875873\n"); + end + ReadData1E = 64'h421000FEFFFFFFFF; + ReadData2E = 64'hBFB638FD07B7855F; + ReadData3E = 64'hBE2FFFFFFBFDFFFF; + ans = 64'hC1D63A5F33F8305A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1876874\n"); + end + ReadData1E = 64'h000FFFFFFBFFFFFD; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hC003FFFFFBFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1877875\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'h47600000FFFFFFBF; + ReadData3E = 64'hC3E0000007F00000; + ans = 64'h47800000FFFFFFBE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1878876\n"); + end + ReadData1E = 64'hC01D827E1B8DD626; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'hBA22C94812B3803E; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1879877\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hC850040000001FFF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1880878\n"); + end + ReadData1E = 64'h41CFFFFE00000004; + ReadData2E = 64'h0027CB1E8BC78D69; + ReadData3E = 64'h53AFFFFFFFFFFF77; + ans = 64'h53AFFFFFFFFFFF77; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1881879\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFF; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1882880\n"); + end + ReadData1E = 64'h3E8FFFBFFFFF8000; + ReadData2E = 64'hBFFFEFFFFFFFFF80; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFF8040FF7E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1883881\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h402A418AA1A7ECB6; + ans = 64'h402A418AA1A7ECB6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1884882\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'hC3EFFFFFFFFFDFE0; + ReadData3E = 64'h3FFFFFFFFBFFFFFF; + ans = 64'h440FFFFFFFFFDFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1885883\n"); + end + ReadData1E = 64'h3EEA01809664759B; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h0010000000000000; + ans = 64'h0010000D00C04B32; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1886884\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hC1E25B847533CFDB; + ReadData3E = 64'h47E0700000000000; + ans = 64'h47E0700000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1887885\n"); + end + ReadData1E = 64'h404FFFBFFF000000; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'hBFF8C3FD9C33E6E7; + ans = 64'hBFF8C3FD9C33E6E7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1888886\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h8990000003FFFFDF; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1889887\n"); + end + ReadData1E = 64'h3FC3B5F03490E6B0; + ReadData2E = 64'h47C003FF7FFFFFFF; + ReadData3E = 64'hBFD000400000FFFF; + ans = 64'h4793BADD12EE8944; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1890888\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1891889\n"); + end + ReadData1E = 64'h3FC0200000000800; + ReadData2E = 64'hC1E0003FFFEFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC1B020407FEFE7FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1892890\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'hC15000000207FFFF; + ans = 64'hC14FFFFF840FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1893891\n"); + end + ReadData1E = 64'h3FC0001000100000; + ReadData2E = 64'hC1DF800000800000; + ReadData3E = 64'hBFEFFC00FFFFFFFF; + ans = 64'hC1AF801F829F4090; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1894892\n"); + end + ReadData1E = 64'h380F800000000FFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1895893\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h3FB00003FFFBFFFF; + ReadData3E = 64'h35EFFFFC003FFFFE; + ans = 64'h3FD00003FFFBFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1896894\n"); + end + ReadData1E = 64'h3FCD679C32D63B0B; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h380FFFE000000006; + ans = 64'h3FBD679C32D63B0D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1897895\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hC7050D3CB8605A9C; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hC7250D3CB8605A9B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1898896\n"); + end + ReadData1E = 64'h3B6FFFFFFFFFFFF9; + ReadData2E = 64'h71B000000007FF7E; + ReadData3E = 64'h8000007FFFFFFFFD; + ans = 64'h6D3000000007FF7A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1899897\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h4008000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1900898\n"); + end + ReadData1E = 64'h45FFFFFFFFFE0002; + ReadData2E = 64'h2F8FC07FFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1901899\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFF81; + ans = 64'h4020FFFFFFFFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1902900\n"); + end + ReadData1E = 64'hB7EFFFFEFC000000; + ReadData2E = 64'h3EEFF800000FFFFE; + ReadData3E = 64'hB41FFFF800800000; + ans = 64'hB6EFF7FEFC5100FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1903901\n"); + end + ReadData1E = 64'h8400000000000207; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1904902\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hC3D000003FFFFFFE; + ReadData3E = 64'hBFD55CBFA26BEFE4; + ans = 64'hC3F000003FFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1905903\n"); + end + ReadData1E = 64'hC68FFFF000000FFF; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hBA78518B77A98C37; + ans = 64'hC6AFFFF000001001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1906904\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hBFD000FFFFFFDFFF; + ReadData3E = 64'h8010000000000001; + ans = 64'hBFF000FFFFFFDFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1907905\n"); + end + ReadData1E = 64'h3FFFFE0000010000; + ReadData2E = 64'hBFAFFDBFFFFFFFFE; + ReadData3E = 64'hC91FDF7FFFFFFFFF; + ans = 64'hC91FDF7FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1908906\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h4360000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1909907\n"); + end + ReadData1E = 64'hBFB03FFFFF7FFFFF; + ReadData2E = 64'h3FC000000000BFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FF7E000003F9D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1910908\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'hC73FFFFFFFFFFFDE; + ans = 64'hC73FFFFFFFFFFFDE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1911909\n"); + end + ReadData1E = 64'hC1F000001000000F; + ReadData2E = 64'h802FFDEFFFFFFFFF; + ReadData3E = 64'h47EFFF000000007F; + ans = 64'h47EFFF000000007F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1912910\n"); + end + ReadData1E = 64'hB07FFE000000FFFE; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hF07FFE000000FFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1913911\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hFFFF4BFD34FDB3AB; + ReadData3E = 64'h80269941F90C9202; + ans = 64'hFFFF4BFD34FDB3AB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1914912\n"); + end + ReadData1E = 64'h3EA06AF19208BCC4; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'hBFBFFBFFEFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1915913\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hC0507FFFFFFFFFEE; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1916914\n"); + end + ReadData1E = 64'h8000000000000040; + ReadData2E = 64'h189FFFDFFFFFDFFF; + ReadData3E = 64'h3FCFF80007FFFFFF; + ans = 64'h3FCFF80007FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1917915\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1918916\n"); + end + ReadData1E = 64'h46F0000100000002; + ReadData2E = 64'h43FFFF807FFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h4AFFFF827FF80803; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1919917\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'h3A4DB4EB071235DB; + ans = 64'h3A4DB4EB071235DB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1920918\n"); + end + ReadData1E = 64'h416000000021FFFF; + ReadData2E = 64'h41E0010080000000; + ReadData3E = 64'hC0EFFFFFEFFFFFC0; + ans = 64'h435001008021C220; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1921919\n"); + end + ReadData1E = 64'h00080000003FFFFE; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h8000000000000000; + ans = 64'h8000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1922920\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h41C007F7FFFFFFFE; + ReadData3E = 64'h3FAFFFF010000000; + ans = 64'h41E007F80001FFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1923921\n"); + end + ReadData1E = 64'h3A6FFFFFFFFFFC00; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h07F5B717CB43CA6E; + ans = 64'hB71FFFFFFFFFFC00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1924922\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hBFCB4F36C76CEF01; + ReadData3E = 64'h4000000000000001; + ans = 64'h3FF258649C498882; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1925923\n"); + end + ReadData1E = 64'h40C0000000107FFF; + ReadData2E = 64'h4800000000401FFF; + ReadData3E = 64'h40CFFFFFF7EFFFFF; + ans = 64'h48D0000000509FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1926924\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1927925\n"); + end + ReadData1E = 64'h63D000100000001E; + ReadData2E = 64'h436000000001EFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h674000100001F01F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1928926\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'hFFD0000000800020; + ans = 64'hFFD0000000800020; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1929927\n"); + end + ReadData1E = 64'hC1C0000017FFFFFE; + ReadData2E = 64'hC45FFFF900000000; + ReadData3E = 64'h3FD0000000000018; + ans = 64'h462FFFF92FFFF57C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1930928\n"); + end + ReadData1E = 64'hB7FFFFFFFFFF8001; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1931929\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h737FFF80FFFFFFFF; + ReadData3E = 64'hBEA0000FFBFFFFFE; + ans = 64'h739FFF80FFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1932930\n"); + end + ReadData1E = 64'hC00FFE000FFFFFFF; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h43D624FA5D02AA40; + ans = 64'h43D624FA5D02AA40; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1933931\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h3FEA25785D77AB47; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h400825785D77AB45; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1934932\n"); + end + ReadData1E = 64'h3FBF1DC753758723; + ReadData2E = 64'hC03DFFFFFFBFFFFE; + ReadData3E = 64'h47E00000000203FF; + ans = 64'h47E00000000203FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1935933\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC01DFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1936934\n"); + end + ReadData1E = 64'hBD60000000002007; + ReadData2E = 64'hB800000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1937935\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'h38000000000017FE; + ans = 64'hC020000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1938936\n"); + end + ReadData1E = 64'hBCAFFFFC000000FE; + ReadData2E = 64'h91C000800003FFFF; + ReadData3E = 64'h434008000000007F; + ans = 64'h434008000000007F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1939937\n"); + end + ReadData1E = 64'h5AE200000000FFFE; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hDB0200000000FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1940938\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hFFD00013FFFFFFFE; + ReadData3E = 64'h40200000100001FF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1941939\n"); + end + ReadData1E = 64'hC7E0808962DEBDB0; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hC1FFFFFFFFFFE07E; + ans = 64'h4810808962DEBDAF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1942940\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h434FEFFFFFFFFFFE; + ReadData3E = 64'h0000000000000001; + ans = 64'h436FEFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1943941\n"); + end + ReadData1E = 64'hC3FBB5300DCAC380; + ReadData2E = 64'hDCFFFFFFFE00007F; + ReadData3E = 64'h5D1CA0F1B5764609; + ans = 64'h610BB5300C0F70ED; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1944942\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC36FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1945943\n"); + end + ReadData1E = 64'h400FFFFDFFFDFFFF; + ReadData2E = 64'hB12000003FFFFFEF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1946944\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'hC00FFFE003FFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1947945\n"); + end + ReadData1E = 64'h3EDA57F5BA788EF7; + ReadData2E = 64'hB12351E6FD26876F; + ReadData3E = 64'h405F007FFFFFFFFF; + ans = 64'h405F007FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1948946\n"); + end + ReadData1E = 64'hC1E000800007FFFF; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1949947\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'hC3CFFFFFFFFFBBFF; + ReadData3E = 64'hB6F15F11E27D0964; + ans = 64'hC3EFFFFFFFFFBBFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1950948\n"); + end + ReadData1E = 64'hC260000000001FFD; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'h4070020000003FFF; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1951949\n"); + end + ReadData1E = 64'h400FFFFFFFFFFFFE; + ReadData2E = 64'h3A0FFFFC00000040; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1952950\n"); + end + ReadData1E = 64'h59AEFFBFFFFFFFFF; + ReadData2E = 64'hC01000000007F7FF; + ReadData3E = 64'hCFDA8EC449741441; + ans = 64'hD9CEFFC0000F705D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1953951\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1954952\n"); + end + ReadData1E = 64'h41D008000000001F; + ReadData2E = 64'h3FCE1BF196AC95A1; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h41AE2AFF9077EC26; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1955953\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'hC00FFFFF00020000; + ans = 64'hC00FFFFF00020000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1956954\n"); + end + ReadData1E = 64'h2E8FFFFFF3FFFFFF; + ReadData2E = 64'hF32EBCE1CC75FFAD; + ReadData3E = 64'hC050199FE6691D38; + ans = 64'hE1CEBCE1C0EF2AFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1957955\n"); + end + ReadData1E = 64'hFFFFFFFBFF800000; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFFFFFFBFF800000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1958956\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h3D4020000000FFFE; + ReadData3E = 64'h0010004000001000; + ans = 64'h3D6020000000FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1959957\n"); + end + ReadData1E = 64'hBFCFBFFF00000000; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h4022000000000000; + ans = 64'h4022000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1960958\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h40700000800003FE; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h408FF801000007FC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1961959\n"); + end + ReadData1E = 64'h41DF5FFFFFFFFFFF; + ReadData2E = 64'hB80FFFFFFF000040; + ReadData3E = 64'hC340000000FFFFDF; + ans = 64'hC340000000FFFFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1962960\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4008000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1963961\n"); + end + ReadData1E = 64'hA89FC000000007FE; + ReadData2E = 64'h37FFFFFFFFFE1FFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hA0AFBFFFFFFE2BBD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1964962\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hB80C000000000400; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1965963\n"); + end + ReadData1E = 64'h4D858A70DD0C3994; + ReadData2E = 64'h3F90000000000000; + ReadData3E = 64'h37FFFFFFF7FFFFF7; + ans = 64'h4D258A70DD0C3994; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1966964\n"); + end + ReadData1E = 64'h801FF7FFFFFFC000; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1967965\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hC022D0DE341B5DFA; + ReadData3E = 64'h3CA7432C22485BB7; + ans = 64'hC042D0DE341B5DFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1968966\n"); + end + ReadData1E = 64'h43E008003FFFFFFF; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'hC02B81FA879E94CB; + ans = 64'h43E008003FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1969967\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h3BBFFFFF7DFFFFFF; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA000FFFFFBF001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1970968\n"); + end + ReadData1E = 64'hC3FFFFFF7FFFFFDF; + ReadData2E = 64'h3FE0007FFDFFFFFE; + ReadData3E = 64'h3800000400000010; + ans = 64'hC3F0007FBDFDFFF5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1971969\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h4020000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1972970\n"); + end + ReadData1E = 64'hBFEFFEEFFFFFFFFE; + ReadData2E = 64'h3B5626ADDCC86A70; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1973971\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFBFFFFBFE; + ans = 64'h4037FFFFEFFFFEFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1974972\n"); + end + ReadData1E = 64'h47F0000007FFF7FE; + ReadData2E = 64'h3FB0000004000001; + ReadData3E = 64'h3F00FF7FFFFFFFFE; + ans = 64'h47B000000BFFF801; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1975973\n"); + end + ReadData1E = 64'h38D46BE1E2713284; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1976974\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hC7F000002000FFFE; + ReadData3E = 64'h43CC000000000FFF; + ans = 64'hC81000002000FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1977975\n"); + end + ReadData1E = 64'h678FFFC020000000; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'hC340000008007FFF; + ans = 64'h6ADFFFC020000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1978976\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hB8D00000000011FF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1979977\n"); + end + ReadData1E = 64'h419FFFFFFFF01FFF; + ReadData2E = 64'h8FC000007FFFFFFD; + ReadData3E = 64'h4240000001020000; + ans = 64'h4240000001020000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1980978\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1981979\n"); + end + ReadData1E = 64'hC7EC0000000FFFFE; + ReadData2E = 64'hC65100001FFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4E4DC0003810FFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1982980\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h380000000001FFEE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1983981\n"); + end + ReadData1E = 64'hC3FFFFFE7FFFFFFF; + ReadData2E = 64'h400FFFFFFEFF7FFF; + ReadData3E = 64'h7B40000000003FFC; + ans = 64'h7B40000000003FFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1984982\n"); + end + ReadData1E = 64'hF3F001FFFFFFFE00; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1985983\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hC1F000007FDFFFFF; + ReadData3E = 64'h3990000008010000; + ans = 64'hC21000007FDFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1986984\n"); + end + ReadData1E = 64'hC3D0040000000040; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h37FFFF7FFFFFDFFF; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1987985\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h4B0FFFFF00000000; + ReadData3E = 64'hC010000000000001; + ans = 64'h4B2FFFFF00000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1988986\n"); + end + ReadData1E = 64'h8DCFFFFFFFD7FFFF; + ReadData2E = 64'h416FFEFFFFFFF7FE; + ReadData3E = 64'hC59FF08000000000; + ans = 64'hC59FF08000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1989987\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1990988\n"); + end + ReadData1E = 64'h47F0000000020007; + ReadData2E = 64'hBAF000020003FFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC2F0000200060006; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1991989\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'hC09FFFFFFF7FFFDF; + ans = 64'hC09FFFFFFF7FFFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1992990\n"); + end + ReadData1E = 64'hC06DF2B39D0206F2; + ReadData2E = 64'hCC2FFFFFFFFFFDBF; + ReadData3E = 64'h40BFFEFFFFFFFF7E; + ans = 64'h4CADF2B39D0204D6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1993991\n"); + end + ReadData1E = 64'h871FFFFFFDFFFFF0; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1994992\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h3F88B0EAF2B84C14; + ReadData3E = 64'h4000003FBFFFFFFF; + ans = 64'h400063036BCAE12F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1995993\n"); + end + ReadData1E = 64'hC3D7FFFFFFEFFFFE; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h41F000001FFFBFFF; + ans = 64'h41F000007FFFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1996994\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'h37F39AB82D2077FB; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1997995\n"); + end + ReadData1E = 64'h3F40000101FFFFFF; + ReadData2E = 64'hBF61001FFFFFFFFF; + ReadData3E = 64'h40D562295E0CB4C7; + ans = 64'h40D562295E0874BF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1998996\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hC007FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"1999997\n"); + end + ReadData1E = 64'h4033FDFFFFFFFFFE; + ReadData2E = 64'hC3EFFFC000010000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2000998\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h42B00000000043FF; + ans = 64'h42B00000000041FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2001999\n"); + end + ReadData1E = 64'h434007FFFFFFFFF7; + ReadData2E = 64'hC3F0000003FFFDFE; + ReadData3E = 64'h3AD000000007F000; + ans = 64'hC74008000401FDF4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2003000\n"); + end + ReadData1E = 64'h43CE7FFFFFFFFFFF; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'hC3CE7FFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2004001\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hC0E0C02607BBEE39; + ReadData3E = 64'hBDCFFFFFFDFFFFFF; + ans = 64'hC100C02607BBEE3B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2005002\n"); + end + ReadData1E = 64'h7FE00000080000FE; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h3FD002000000003F; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2006003\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hBFF5FFFFFFFFFFFE; + ReadData3E = 64'h8010000000000001; + ans = 64'hC015FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2007004\n"); + end + ReadData1E = 64'h3B8FFFFFFE7FFFFE; + ReadData2E = 64'h380FE000007FFFFE; + ReadData3E = 64'h381FFFFFF7FFFFBF; + ans = 64'h381FFFFFF7FFFFBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2008005\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hC02FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2009006\n"); + end + ReadData1E = 64'hBFEBFFFFFFFFFFFD; + ReadData2E = 64'hC1F0000000002400; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h41EC000001003EFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2010007\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'hBFC0000000000500; + ans = 64'hC03020000000000A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2011008\n"); + end + ReadData1E = 64'hBFC000020000FFFF; + ReadData2E = 64'h877FFFFFFE00001F; + ReadData3E = 64'h3F80FFFFFFEFFFFF; + ans = 64'h3F80FFFFFFEFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2012009\n"); + end + ReadData1E = 64'h401BA44EFF273A5B; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hC04B844EFF273A59; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2013010\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hC3BFFFFFFFDFFFDF; + ReadData3E = 64'h4461B474C6A3AAEE; + ans = 64'h4461A474C6A3BAEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2014011\n"); + end + ReadData1E = 64'hC02000000000FFFF; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h3FDF3A13972DC395; + ans = 64'h4370000000010000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2015012\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hBFC007FFFEFFFFFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2016013\n"); + end + ReadData1E = 64'h3F907FFFFFFFFFFC; + ReadData2E = 64'hC3EFFFFDFFFFFFFE; + ReadData3E = 64'hB8C0000FFFFEFFFF; + ans = 64'hC3907FFEF7FFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2017014\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2018015\n"); + end + ReadData1E = 64'h7FFDFFFFFFFFF7FE; + ReadData2E = 64'h4A800040000001FF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h7FFDFFFFFFFFF7FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2019016\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'hBF7FFFFFFFF80001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2020017\n"); + end + ReadData1E = 64'h3F504001FFFFFFFF; + ReadData2E = 64'h403083BDF14E8292; + ReadData3E = 64'h3C6FFBFBFFFFFFFF; + ans = 64'h3F90C5CEF98B7AC9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2021018\n"); + end + ReadData1E = 64'h41E00010FFFFFFFE; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2022019\n"); + end + ReadData1E = 64'h4010000000000000; + ReadData2E = 64'hBFA00010000000FE; + ReadData3E = 64'h94980845B263A50A; + ans = 64'hBFC00010000000FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2023020\n"); + end + ReadData1E = 64'hC1EB615755FFCB1A; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'hF9D0010000040000; + ans = 64'hF9D0010000040000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2024021\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'h348817ADB819B661; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2025022\n"); + end + ReadData1E = 64'h43D0800000001FFE; + ReadData2E = 64'h37F7FFFFFBFFFFFF; + ReadData3E = 64'h41DFFFFFFFFFF100; + ans = 64'h41DFFFFFFFFFF100; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2026023\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2027024\n"); + end + ReadData1E = 64'h41F641A3EA16102C; + ReadData2E = 64'hC07003C000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hC27646DB4C80ED58; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2028025\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'hFFDFFFFC10000000; + ans = 64'hFFDFFFFC10000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2029026\n"); + end + ReadData1E = 64'h38168A914A4DADB8; + ReadData2E = 64'h40300000FFFFE000; + ReadData3E = 64'h4070000900000000; + ans = 64'h4070000900000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2030027\n"); + end + ReadData1E = 64'h43C78449CA301E69; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'hC33FFFFFFFFFFE88; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2031028\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hC16000000001001E; + ReadData3E = 64'h3F03ACEC22421A83; + ans = 64'hC18000000000EC72; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2032029\n"); + end + ReadData1E = 64'h41A00800000007FE; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h406FFFFFFE100000; + ans = 64'h4180080800000782; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2033030\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hC3CFF7FFF7FFFFFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hC3EFF7FFF8000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2034031\n"); + end + ReadData1E = 64'h403FFFFFFC0000FF; + ReadData2E = 64'h221FFFFF8001FFFF; + ReadData3E = 64'h402000001FFEFFFF; + ans = 64'h402000001FFEFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2035032\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h4004000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2036033\n"); + end + ReadData1E = 64'hFFD000107FFFFFFF; + ReadData2E = 64'hBFBFFFFFFFDFFDFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2037034\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h68980000FFFFFFFE; + ans = 64'h68980000FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2038035\n"); + end + ReadData1E = 64'hB81FFFF9FFFFFFFE; + ReadData2E = 64'hC7F6000000000000; + ReadData3E = 64'hC47FFFF800020000; + ans = 64'hC47FFFF800020000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2039036\n"); + end + ReadData1E = 64'hC3E8B5EE8B60728F; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hC3E8B5EE8B607291; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2040037\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'h400FFFFFFFFFE010; + ReadData3E = 64'h3FFFFFE001FFFFFF; + ans = 64'h4031FFFE001FF009; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2041038\n"); + end + ReadData1E = 64'h3AD8000000000004; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'h297B1EFF6907283F; + ans = 64'h3AE8000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2042039\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hB7F000000000000C; + ReadData3E = 64'h0000000000000001; + ans = 64'hB81000000000000D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2043040\n"); + end + ReadData1E = 64'h406003FFF7FFFFFF; + ReadData2E = 64'hC1DFFFFFFEFFFFFF; + ReadData3E = 64'h401000000000801F; + ans = 64'hC25003FFF77EDFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2044041\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h4030000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2045042\n"); + end + ReadData1E = 64'hBF1D6A2209EF496E; + ReadData2E = 64'h38084951372AB95D; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2046043\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h402FFFFFC0004000; + ans = 64'h4047FFFFF0001000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2047044\n"); + end + ReadData1E = 64'h8009AD3884A14058; + ReadData2E = 64'h8BA0000000020010; + ReadData3E = 64'h43D4600E18788EAB; + ans = 64'h43D4600E18788EAB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2048045\n"); + end + ReadData1E = 64'h665FFFFFFFDFDFFE; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h69AFFFFFFFDFDFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2049046\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hBF050311F2038A72; + ReadData3E = 64'h46D000080003FFFE; + ans = 64'h46D000080003FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2050047\n"); + end + ReadData1E = 64'h3FC000001FFBFFFE; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'hC01FF5FFFFFFFFFF; + ans = 64'h432000001FFBFFED; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2051048\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hC9BFFFFFFC00001F; + ReadData3E = 64'h4340000000000001; + ans = 64'hC9DFFFFFFC000021; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2052049\n"); + end + ReadData1E = 64'hC0000000000003FF; + ReadData2E = 64'hC1EFFFFEFFFFFDFF; + ReadData3E = 64'h45F0002000000800; + ans = 64'h45F0002000000800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2053050\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2054051\n"); + end + ReadData1E = 64'h40307FFFFFFFFFDE; + ReadData2E = 64'hC037931B48F38F3B; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC07847B4233B2B83; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2055052\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'hBFB00000020007FF; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2056053\n"); + end + ReadData1E = 64'h37E1FFFDFFFFFFFE; + ReadData2E = 64'hBF6FFC000FFFFFFF; + ReadData3E = 64'hC23000000000000C; + ans = 64'hC23000000000000C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2057054\n"); + end + ReadData1E = 64'hBAD1CB4713A69E25; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2058055\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'h3950800000FFFFFF; + ReadData3E = 64'h37FFFFFFE0000007; + ans = 64'h3970800020FFFFE0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2059056\n"); + end + ReadData1E = 64'h4344FD2BD8CEF012; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hB80007FFBFFFFFFE; + ans = 64'hB80007FFBFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2060057\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hC0E757C35B5CB08F; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hC10757CB5B5CB090; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2061058\n"); + end + ReadData1E = 64'h7FFFFDFFFFFFFFFC; + ReadData2E = 64'h43C8367DE7BBDBF3; + ReadData3E = 64'h41C2000000007FFF; + ans = 64'h7FFFFDFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2062059\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2063060\n"); + end + ReadData1E = 64'h43FDDFCC953652D9; + ReadData2E = 64'h7FF3039709BD4B2A; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h7FFB039709BD4B2A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2064061\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'hC1D80007FFFFFFFF; + ans = 64'hC1D80007FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2065062\n"); + end + ReadData1E = 64'h3F3FFFFFFE3FFFFF; + ReadData2E = 64'hC0153304BDD0518A; + ReadData3E = 64'h40310583799E8B75; + ans = 64'h403104D9E178A639; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2066063\n"); + end + ReadData1E = 64'h3FE0000001FFFFFE; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2067064\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'h7FF0000000000180; + ReadData3E = 64'h400000000000000F; + ans = 64'h7FF8000000000180; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2068065\n"); + end + ReadData1E = 64'h400FFC03FFFFFFFF; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'hBFF25ABEEAC7D4CC; + ans = 64'hC0012C607563EA66; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2069066\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hBE4FFFFF7FFF8000; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hBE6FFFFF7EFF8002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2070067\n"); + end + ReadData1E = 64'hBF9FFF800FFFFFFF; + ReadData2E = 64'hB81295C2961CFA58; + ReadData3E = 64'hC1DF000FFFFFFFFF; + ans = 64'hC1DF000FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2071068\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC000000000000003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2072069\n"); + end + ReadData1E = 64'hABF0040000000010; + ReadData2E = 64'h5617E27E90F358FE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC35000017E877308; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2073070\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'h380DF807ADD03602; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2074071\n"); + end + ReadData1E = 64'hFFDFFFFF800FFFFE; + ReadData2E = 64'h064000007FFFFEFF; + ReadData3E = 64'h3B30000FFFFEFFFF; + ans = 64'hC63000004007FCFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2075072\n"); + end + ReadData1E = 64'h00200007FFF7FFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2076073\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'h43DFFFDFFFFFEFFF; + ReadData3E = 64'h3FD7FFFFFFFEFFFF; + ans = 64'h43FFFFDFFFFFF001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2077074\n"); + end + ReadData1E = 64'hC0D3FFFFFFBFFFFF; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'h72400003FFFFDFFE; + ans = 64'h72400003FFFFDFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2078075\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hC00D3CBC6E373A60; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2079076\n"); + end + ReadData1E = 64'h43FB0B5364FDA81F; + ReadData2E = 64'h480C041D846EE3FC; + ReadData3E = 64'h401FFFFFFFF3FFFF; + ans = 64'h4C17AD6354FA95F3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2080077\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2081078\n"); + end + ReadData1E = 64'hFFF0011FFFFFFFFF; + ReadData2E = 64'h43C000000000FEFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hFFF8011FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2082079\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hBFCFCACDD4825F5F; + ans = 64'hC0401FCACDD4825F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2083080\n"); + end + ReadData1E = 64'hC1D0000000000403; + ReadData2E = 64'hCD5000000400007E; + ReadData3E = 64'h37E000000000001F; + ans = 64'h4F30000004000481; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2084081\n"); + end + ReadData1E = 64'h3DF3BFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'hC153BFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2085082\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hB4AB166CE11FA205; + ReadData3E = 64'h3810010000000FFE; + ans = 64'h3810010000000FFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2086083\n"); + end + ReadData1E = 64'h43FFFFD000000000; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h613FFFFFFFFFFE1E; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2087084\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hAA6013FFFFFFFFFF; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2088085\n"); + end + ReadData1E = 64'hD098800000000000; + ReadData2E = 64'h4573FFFFFFFFFFFF; + ReadData3E = 64'h41EEFFFFFFFFC000; + ans = 64'hD61E9FFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2089086\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2090087\n"); + end + ReadData1E = 64'h3FBFFEFFFFFF7FFE; + ReadData2E = 64'h3FF0000000FFFFC0; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h3FBFFF0001FF6F6E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2091088\n"); + end + ReadData1E = 64'h4010000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'hC66B466C249D1CF2; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2092089\n"); + end + ReadData1E = 64'h41D2B9A6C9E06F87; + ReadData2E = 64'h40100000000801FF; + ReadData3E = 64'h345FF7FFFFFFFFFF; + ans = 64'h41F2B9A6C9E9CEB0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2093090\n"); + end + ReadData1E = 64'h3EF03FFFFFFFF800; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2094091\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'h43CFC00007FFFFFF; + ReadData3E = 64'h380FFFF7FFFFFBFE; + ans = 64'h43FFC00007FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2095092\n"); + end + ReadData1E = 64'hC3900200000000FF; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'hDB66C61CC98DBD16; + ans = 64'hDB66C61CC98DBD16; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2096093\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'h0000003FE0000000; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2097094\n"); + end + ReadData1E = 64'hBC6FFFFBFFFFFFDF; + ReadData2E = 64'h31C100000007FFFF; + ReadData3E = 64'h3FEFFFFFFFFFF7FE; + ans = 64'h3FEFFFFFFFFFF7FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2098095\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2099096\n"); + end + ReadData1E = 64'hC1E000400000003F; + ReadData2E = 64'h3FE3FFFFF8000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2100097\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h9D9000000007FDFE; + ans = 64'h3CDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2101098\n"); + end + ReadData1E = 64'hBFEFFFFFFC7FFFFF; + ReadData2E = 64'hBF5001FC00000000; + ReadData3E = 64'hBE6B5FD049870ECF; + ans = 64'h3F5001C53E9F3561; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2102099\n"); + end + ReadData1E = 64'hCCF4000000002000; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'hC000000000000000; + ans = 64'hCCD4000000002000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2103100\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hC3EFFFFFBFFF0000; + ReadData3E = 64'hFFDFFFFEEFFFFFFF; + ans = 64'hFFDFFFFEEFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2104101\n"); + end + ReadData1E = 64'h801C001FFFFFFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hBD433614F30B9E71; + ans = 64'hBD433614F30B9E71; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2105102\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hB810000040003FFF; + ReadData3E = 64'h8010000000000001; + ans = 64'hB840000040003FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2106103\n"); + end + ReadData1E = 64'h3BFC0000000000FF; + ReadData2E = 64'h3DB00000003FDFFF; + ReadData3E = 64'h43C003FFFDFFFFFF; + ans = 64'h43C003FFFDFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2107104\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2108105\n"); + end + ReadData1E = 64'h3FFFFFFFFE0007FE; + ReadData2E = 64'hC0100FFFFF800000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hBF9FFFFCFE08080E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2109106\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'hC3D0000000FFFFFF; + ans = 64'hC3D0000000FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2110107\n"); + end + ReadData1E = 64'hED83FFFFFFEFFFFE; + ReadData2E = 64'h000916C684B77DE2; + ReadData3E = 64'hBFD6EFED62C60318; + ans = 64'hBFD6EFED62C60318; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2111108\n"); + end + ReadData1E = 64'hFFDFFFFFFFE1FFFF; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hFFEFFFFFFFE1FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2112109\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'h3DAFF80000080000; + ReadData3E = 64'hA25FFFFFFFFF001F; + ans = 64'h3DDFF8000007FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2113110\n"); + end + ReadData1E = 64'hBF2FE00000200000; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h3FB0007FFFEFFFFF; + ans = 64'h3FAF817FFFDF7FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2114111\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hC03FFFFFFFFEF800; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2115112\n"); + end + ReadData1E = 64'h001FFFFF7FDFFFFE; + ReadData2E = 64'hC00FFFFFFFDFF7FE; + ReadData3E = 64'hE5E2B246F31C8D37; + ans = 64'hE5E2B246F31C8D37; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2116113\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2117114\n"); + end + ReadData1E = 64'hC1CFFFFF0007FFFE; + ReadData2E = 64'hBFEC09C0267EAEDD; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h41CC09BF45B7B017; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2118115\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h2AC07C2E9A0A7CC4; + ans = 64'h436FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2119116\n"); + end + ReadData1E = 64'h97AC96A4241B5290; + ReadData2E = 64'hC01FFFF81FFFFFFF; + ReadData3E = 64'hC1DFBBFFFFFFFFFE; + ans = 64'hC1DFBBFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2120117\n"); + end + ReadData1E = 64'h8DFBDF6F6CDC937D; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'h915BDF6F6CDC937B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2121118\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hC030FFFFFFFFFFF0; + ReadData3E = 64'h42F000000000400F; + ans = 64'h42F000000000378F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2122119\n"); + end + ReadData1E = 64'hC1FB6EFE117A3AE3; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h43C0000001EFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2123120\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hB7E000FFFE000000; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2124121\n"); + end + ReadData1E = 64'h3FFFF7FFFFFDFFFE; + ReadData2E = 64'h41E000000000011E; + ReadData3E = 64'h3EF7F7FFFFFFFFFE; + ans = 64'h41EFF7FFFFFE0269; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2125122\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2126123\n"); + end + ReadData1E = 64'h000C546F5A2E851B; + ReadData2E = 64'h4028BE97621BF5C0; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h004711865A0A4911; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2127124\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h47FFFFFFF7FFFFFC; + ans = 64'h47FFFFFFF7FFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2128125\n"); + end + ReadData1E = 64'hBCA000008000003F; + ReadData2E = 64'h40E0003FFFFFFFF7; + ReadData3E = 64'h47FFFFFFE0000800; + ans = 64'h47FFFFFFE0000800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2129126\n"); + end + ReadData1E = 64'h47FE4A31465FBDE6; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2130127\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hC3CFFE000001FFFE; + ReadData3E = 64'hC69004001FFFFFFE; + ans = 64'hC6900400200007FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2131128\n"); + end + ReadData1E = 64'hC1DF00001FFFFFFE; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h802FFFF000FFFFFF; + ans = 64'h01FF00001F000080; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2132129\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hA293FFFFF8000000; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2133130\n"); + end + ReadData1E = 64'hC07000000081FFFE; + ReadData2E = 64'hC03FFFFFFDBFFFFF; + ReadData3E = 64'h6643CF270787592F; + ans = 64'h6643CF270787592F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2134131\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2135132\n"); + end + ReadData1E = 64'h49D003FFDFFFFFFE; + ReadData2E = 64'h6B7FFFFFFBC00000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2136133\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hBFC00000007BFFFE; + ans = 64'hBFC00000007C003E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2137134\n"); + end + ReadData1E = 64'hC1BFFFFFEDFFFFFF; + ReadData2E = 64'h3508DA42B0AAF7C8; + ReadData3E = 64'h141001FFFFFFFFFF; + ans = 64'hB6D8DA42A2B03244; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2138135\n"); + end + ReadData1E = 64'h3A72C0976B960AFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2139136\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'h423DFFBFFFFFFFFE; + ReadData3E = 64'h404FFE03FFFFFFFF; + ans = 64'h426DFFC00007FF7E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2140137\n"); + end + ReadData1E = 64'hBFC0803FFFFFFFFF; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hB91000003FFFFDFF; + ans = 64'h3FB0803FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2141138\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hB80000000037FFFE; + ReadData3E = 64'h0000000000000001; + ans = 64'hB83000000037FFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2142139\n"); + end + ReadData1E = 64'hC00B14CAC18F5886; + ReadData2E = 64'hC071F892F4D817C5; + ReadData3E = 64'hC3ED357059EE116E; + ans = 64'hC3ED357059EE116E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2143140\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC01FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2144141\n"); + end + ReadData1E = 64'h3FA600BF66D88079; + ReadData2E = 64'h4000400000000020; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00F4D39ECDC60E9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2145142\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h4010010007FFFFFF; + ans = 64'hC027FF7FFBFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2146143\n"); + end + ReadData1E = 64'hFFDFFFFFC0000000; + ReadData2E = 64'h7FE0000002002000; + ReadData3E = 64'h3FFFFFFFFFBFFF80; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2147144\n"); + end + ReadData1E = 64'h4804BCC577327D59; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hC814BCC577327D5A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2148145\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'h3E3000FFFFFC0000; + ReadData3E = 64'h801FFFFFFFFFBEFE; + ans = 64'h3E6000FFFFFBFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2149146\n"); + end + ReadData1E = 64'h4000FFFFFFFFE000; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h3930000022000000; + ans = 64'hC020FFFFFFFFE000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2150147\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'h401000000008003E; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000011; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2151148\n"); + end + ReadData1E = 64'hBAD0000002001000; + ReadData2E = 64'h402FBFFFFFFFFFFE; + ReadData3E = 64'hBAC400000000001F; + ans = 64'hBB10800001FC0FE0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2152149\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC35000000000000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2153150\n"); + end + ReadData1E = 64'h41E0007FFFF80000; + ReadData2E = 64'hC14000000000FFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC330007FFFF90005; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2154151\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'hBA0960BDAEE25694; + ans = 64'hC37FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2155152\n"); + end + ReadData1E = 64'hC0200000020001FE; + ReadData2E = 64'hC040400001FFFFFF; + ReadData3E = 64'h4471FEFFFFFFFFFE; + ans = 64'h4471FEFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2156153\n"); + end + ReadData1E = 64'hB1374D794C20A467; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2157154\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hB7FDBF911EFB3214; + ReadData3E = 64'hC34EFFFFFFFFFFFF; + ans = 64'hC34EFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2158155\n"); + end + ReadData1E = 64'h38E00000000C0000; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'hBFFF00000FFFFFFF; + ans = 64'hF8E00000000BFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2159156\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hC3E0000000800003; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hC410000000800003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2160157\n"); + end + ReadData1E = 64'h000001FFFFFFFFEF; + ReadData2E = 64'hBF7C8B4720673284; + ReadData3E = 64'hC0744D3494F001FB; + ans = 64'hC0744D3494F001FB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2161158\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFF; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2162159\n"); + end + ReadData1E = 64'hC7EC5A524506BBF3; + ReadData2E = 64'h3FFF7FDFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC7FBE8CCA1A05BFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2163160\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'hC000004FFFFFFFFF; + ans = 64'hC000004FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2164161\n"); + end + ReadData1E = 64'hC0EFFFFB00000000; + ReadData2E = 64'h7ABFFFFFFFFFFFCE; + ReadData3E = 64'h41F9E8FBA464BF58; + ans = 64'hFBBFFFFAFFFFFFCE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2165162\n"); + end + ReadData1E = 64'h7FE0000000000007; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h4010000000000000; + ans = 64'h4018000000000004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2166163\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hC3C00000200001FE; + ReadData3E = 64'h7FF0000002007FFF; + ans = 64'h7FF8000002007FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2167164\n"); + end + ReadData1E = 64'hBFFE1FFFFFFFFFFF; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'h80200001FFFFFFFF; + ans = 64'h80371000FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2168165\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'h938FFFFDFFFFFFF0; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2169166\n"); + end + ReadData1E = 64'hB808F9722319197E; + ReadData2E = 64'hC1D0000080080000; + ReadData3E = 64'hC03FFE00000007FF; + ans = 64'hC03FFE00000007FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2170167\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h3CDBFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2171168\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h40300000000000FE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC350000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2172169\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'hC34FFFEFFFFFFFC0; + ans = 64'hC34FFFEFFFFFFFBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2173170\n"); + end + ReadData1E = 64'hC09F29D0B5C44B08; + ReadData2E = 64'h002FDFFFFBFFFFFE; + ReadData3E = 64'h37F22C96FE85118E; + ans = 64'h37F22C96FE85118E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2174171\n"); + end + ReadData1E = 64'h389A5E007D1BA814; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2175172\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hBE6FE00000000010; + ReadData3E = 64'h4E37CD76BDE231D6; + ans = 64'h4E37CD76BDE231D6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2176173\n"); + end + ReadData1E = 64'h4260200003FFFFFE; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h4640000000004FFF; + ans = 64'h4640000000004FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2177174\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'h56500000003F7FFF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2178175\n"); + end + ReadData1E = 64'hC3CFF0000003FFFF; + ReadData2E = 64'hC0000401FFFFFFFF; + ReadData3E = 64'h3FE93A092EAB5ACA; + ans = 64'h43DFF7FFFE0400FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2179176\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2180177\n"); + end + ReadData1E = 64'hB59040000003FFFE; + ReadData2E = 64'hBEFFFFFF7FFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2181178\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'hBDEFFFFE000001FE; + ans = 64'h402FFFFFFFFDFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2182179\n"); + end + ReadData1E = 64'hB95DFBD7DD496520; + ReadData2E = 64'h3CA64E89D5E848BF; + ReadData3E = 64'h463FFF8000000000; + ans = 64'h463FFF8000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2183180\n"); + end + ReadData1E = 64'h47FFC0003FFFFFFF; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h0010000000000000; + ans = 64'h481FC0003FFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2184181\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hC01A981A46881D50; + ReadData3E = 64'h401000004000000F; + ans = 64'hC048981A3E881D4C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2185182\n"); + end + ReadData1E = 64'hC1CD3581B183FF50; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hC010000080000003; + ans = 64'hC1ED3581B203FF56; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2186183\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hCD4FFFFFFF81FFFE; + ReadData3E = 64'hC010000000000001; + ans = 64'hCD7FFFFFFF81FFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2187184\n"); + end + ReadData1E = 64'hC9D0800000200000; + ReadData2E = 64'h001FFFFFFFFE0FFF; + ReadData3E = 64'h43CEEFCE7DB6EFC4; + ans = 64'h43CEEFCE7DB6EFC4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2188185\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4370000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2189186\n"); + end + ReadData1E = 64'hE3FFFFFFF0001000; + ReadData2E = 64'hC9B0000003BFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h6DBFFFFFF7800FF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2190187\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h002FFFFE0000001F; + ans = 64'h437FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2191188\n"); + end + ReadData1E = 64'hB6D0000000201FFF; + ReadData2E = 64'hC3D00000001FFE00; + ReadData3E = 64'hC7EFFFFFFFFFFFF2; + ans = 64'hC7EFFFFFFFFFFFF2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2192189\n"); + end + ReadData1E = 64'h8010000002002000; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2193190\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'h8026CFA03369F6FE; + ReadData3E = 64'h43E001FFFFFFFFBF; + ans = 64'h43E001FFFFFFFFBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2194191\n"); + end + ReadData1E = 64'h4040000000000402; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h3FBC80DCB13A0887; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2195192\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hC1E00000007FFF7F; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hC2100000007DFF7E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2196193\n"); + end + ReadData1E = 64'h3CA5735ADFAF0313; + ReadData2E = 64'hC1EF7FFFEFFFFFFE; + ReadData3E = 64'h480007FF80000000; + ans = 64'h480007FF80000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2197194\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2198195\n"); + end + ReadData1E = 64'hD0E25714EB74FAD1; + ReadData2E = 64'hB81FFFFF7FFFFF7E; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2199196\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h3FDEFFFDFFFFFFFF; + ans = 64'h3FDEFFFDFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2200197\n"); + end + ReadData1E = 64'h425000008000003E; + ReadData2E = 64'h4035D4D9A4A21809; + ReadData3E = 64'hB7FFFFFFFFFE7FFF; + ans = 64'h4295D4DA5348E583; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2201198\n"); + end + ReadData1E = 64'h43EFFF800001FFFE; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2202199\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hC7FFFFBFFF7FFFFF; + ReadData3E = 64'h3CAFF07FFFFFFFFE; + ans = 64'hC82FFFBFFF7FFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2203200\n"); + end + ReadData1E = 64'hC3EFFDFF7FFFFFFF; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h802FFFFFFFFFF006; + ans = 64'h409FFDFF7FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2204201\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hC1D0080000001FFF; + ReadData3E = 64'h8010000000000001; + ans = 64'hC200080000001FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2205202\n"); + end + ReadData1E = 64'h37F538059152801C; + ReadData2E = 64'hC340000040000080; + ReadData3E = 64'h417FFFFFFC0FFFFE; + ans = 64'h417FFFFFFC0FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2206203\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hBFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2207204\n"); + end + ReadData1E = 64'hB9E0000000000023; + ReadData2E = 64'h3A0E000000000002; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2208205\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h00000007FFFE0000; + ans = 64'hC00FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2209206\n"); + end + ReadData1E = 64'hC1E03E91DBB8B8EE; + ReadData2E = 64'h3FF00000403FFFFE; + ReadData3E = 64'h43FFFFFFFE00000E; + ans = 64'h43FFFFFFFDF7E0C5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2210207\n"); + end + ReadData1E = 64'hBAE0007FEFFFFFFE; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2211208\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hC1D17E709CEE2843; + ReadData3E = 64'h41CFFFFFFD7FFFFF; + ans = 64'hC1FEFCE13A2C5084; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2212209\n"); + end + ReadData1E = 64'hC3C00010000000FF; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'hBFC80000000000FF; + ans = 64'h43C00010000000FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2213210\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hBF20040000000FFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2214211\n"); + end + ReadData1E = 64'h471C000040000000; + ReadData2E = 64'h3FEFFFF001FFFFFF; + ReadData3E = 64'h43F239BD1B57EC8F; + ans = 64'h471BFFF241BFE008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2215212\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2216213\n"); + end + ReadData1E = 64'h3FBBFFFFFFFFFFFA; + ReadData2E = 64'hCD60001DFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hCD2C00347FFFFFF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2217214\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'h462FFFFF00800000; + ans = 64'h462FFFFF00800000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2218215\n"); + end + ReadData1E = 64'hBFEFFFFFFE00FFFF; + ReadData2E = 64'h47FFFFFFFFFFFFFE; + ReadData3E = 64'h1DD0400000200000; + ans = 64'hC7FFFFFFFE00FFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2219216\n"); + end + ReadData1E = 64'hCCE0400010000000; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'h4D00400010000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2220217\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hC018B10BA65DC953; + ReadData3E = 64'hC28F804000000000; + ans = 64'hC28F804000018B11; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2221218\n"); + end + ReadData1E = 64'h43F0100000000003; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hC04FFFFFFFFFDFEF; + ans = 64'hC420100000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2222219\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'h4801FFEFFFFFFFFF; + ReadData3E = 64'h4000000000000001; + ans = 64'h4831FFEFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2223220\n"); + end + ReadData1E = 64'h3E30000001FFFDFF; + ReadData2E = 64'hC80FFFFFFFFFF400; + ReadData3E = 64'h3FBFF0000000FFFE; + ans = 64'hC650000001FFF7FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2224221\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC37FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2225222\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFF806; + ReadData2E = 64'h412949D52A6CB127; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFF806; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2226223\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h7C300040000000FF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2227224\n"); + end + ReadData1E = 64'h403000000003FEFF; + ReadData2E = 64'hC030007FFFFFFFDF; + ReadData3E = 64'h3F0E4D6657CEFE74; + ans = 64'hC070007FC369324E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2228225\n"); + end + ReadData1E = 64'h3E6F86482EC7D93E; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'hC340000000000000; + ans = 64'hFE6F86482EC7D93C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2229226\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hB7F0000000000280; + ReadData3E = 64'h4800000000013FFE; + ans = 64'h4800000000013FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2230227\n"); + end + ReadData1E = 64'hBEFFF000FFFFFFFF; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'h43D00003FFFFDFFF; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2231228\n"); + end + ReadData1E = 64'h401FFFFFFFFFFFFE; + ReadData2E = 64'hC34FDFFEFFFFFFFE; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hC37FDFFEFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2232229\n"); + end + ReadData1E = 64'hC7E0000FFFFFEFFE; + ReadData2E = 64'h3FEFFFFDDFFFFFFE; + ReadData3E = 64'h3B0FEFBFFFFFFFFF; + ans = 64'hC7E0000EEFFEDFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2233230\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2234231\n"); + end + ReadData1E = 64'h001E2DA9AC44D7E7; + ReadData2E = 64'h47E4AEDAFF4429F4; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2235232\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h41CD4AA3A975F3DD; + ans = 64'h41CD4AA3A975F3DD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2236233\n"); + end + ReadData1E = 64'hC03FFFC000003FFE; + ReadData2E = 64'h001FC0000000003F; + ReadData3E = 64'h43C0FA67D4E02323; + ans = 64'h43C0FA67D4E02323; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2237234\n"); + end + ReadData1E = 64'hBFDFFF03FFFFFFFF; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2238235\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h408731F9508C3021; + ReadData3E = 64'h3C1483EDBDF15E78; + ans = 64'h43D731F9508C3021; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2239236\n"); + end + ReadData1E = 64'h3F2FFFFFFFFC0FFF; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h47F1FFFBFFFFFFFE; + ans = 64'h47F1FFFBFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2240237\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'hBFBCA1C25E39CCCA; + ReadData3E = 64'h0000000000000001; + ans = 64'hC30CA1C25E39CCCA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2241238\n"); + end + ReadData1E = 64'hC7E0000400FFFFFF; + ReadData2E = 64'h9CB0800008000000; + ReadData3E = 64'hD1A0000000000006; + ans = 64'hD1A0000000000006; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2242239\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h4320000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2243240\n"); + end + ReadData1E = 64'hFFD100FFFFFFFFFF; + ReadData2E = 64'hBE0FFFFF00000200; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h7DF100FF77F8010F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2244241\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hC1AFFFFFFFFBFFDF; + ans = 64'h432FFFFFE0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2245242\n"); + end + ReadData1E = 64'hBE4DFFFFFFFFF7FF; + ReadData2E = 64'h43E020000000000F; + ReadData3E = 64'hBEBC5B32A2D46F7C; + ans = 64'hC23E3BFFFFFFF80B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2246243\n"); + end + ReadData1E = 64'h3FF000000DFFFFFE; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h3FF000000DFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2247244\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h3FD5772625A27745; + ReadData3E = 64'h37E01007FFFFFFFF; + ans = 64'h4325772625A27745; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2248245\n"); + end + ReadData1E = 64'hBFDFBE7F7CD53F81; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h41F0000FFFFFFC00; + ans = 64'h41F0000FFFF80C60; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2249246\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'hBFFFFFFFFFFFCFFE; + ReadData3E = 64'h4340000000000001; + ans = 64'hC33FFFFFFFFF9FFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2250247\n"); + end + ReadData1E = 64'hB8600200000007FF; + ReadData2E = 64'hC10FFFFFF00007FF; + ReadData3E = 64'h527FFFFFEFFC0000; + ans = 64'h527FFFFFEFFC0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2251248\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2252249\n"); + end + ReadData1E = 64'h43FFFFFFFFFFFFF7; + ReadData2E = 64'h41F0000000800010; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h460000000080000B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2253250\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hC65FFFFFBFFBFFFF; + ans = 64'hC65FFFFFBFFBFFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2254251\n"); + end + ReadData1E = 64'h12A00FFFFFFFFDFF; + ReadData2E = 64'h3FAFEFFFFF800000; + ReadData3E = 64'hF10FFF81FFFFFFFE; + ans = 64'hF10FFF81FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2255252\n"); + end + ReadData1E = 64'h3F220DBDEC6482BE; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2256253\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h3FCF01FFFFFFFFFE; + ReadData3E = 64'hBB2FC00000000007; + ans = 64'h431F01FFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2257254\n"); + end + ReadData1E = 64'h43D00041FFFFFFFE; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h40148A5AF03C188B; + ans = 64'h47200041FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2258255\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'hC00FFF7FFFFF0000; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hC35FFF7FFFFF0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2259256\n"); + end + ReadData1E = 64'h41CDBC611C027028; + ReadData2E = 64'hB7EFF7FFFFFFFFFE; + ReadData3E = 64'hC720002000000010; + ans = 64'hC720002000000010; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2260257\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2261258\n"); + end + ReadData1E = 64'hC020000000002007; + ReadData2E = 64'hC00100FFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h4031010000002207; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2262259\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h41FFFFFFFE0000FE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2263260\n"); + end + ReadData1E = 64'h40FF000001FFFFFE; + ReadData2E = 64'h4028B10DB29591E1; + ReadData3E = 64'h25CFFFFFFFF7FF00; + ans = 64'h4137EB85468BF62C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2264261\n"); + end + ReadData1E = 64'h7FF0000100000400; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h4010000000000000; + ans = 64'h7FF8000100000400; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2265262\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h41DA340AB498A556; + ReadData3E = 64'h7F6FFFEFF8000000; + ans = 64'h7F6FFFEFF8000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2266263\n"); + end + ReadData1E = 64'hC14FEFFFDFFFFFFE; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hBF70040000000002; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2267264\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h41B05D3FEDB216EB; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h45005D3FEDB216EB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2268265\n"); + end + ReadData1E = 64'h2970000000100008; + ReadData2E = 64'h3EEFFFFFE000FFFF; + ReadData3E = 64'hC3DFFFFC0000003E; + ans = 64'hC3DFFFFC0000003E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2269266\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2270267\n"); + end + ReadData1E = 64'hC3EFFFFFFFFE0001; + ReadData2E = 64'h332DC3DA3FF880F3; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2271268\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'hFFD1000000000008; + ans = 64'hFFD1000000000008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2272269\n"); + end + ReadData1E = 64'hC1E001FFFEFFFFFF; + ReadData2E = 64'h43CFFF7FFFFFFFEF; + ReadData3E = 64'h47F00001FFFFFF7F; + ans = 64'h47F00001FFFDFF47; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2273270\n"); + end + ReadData1E = 64'hBCA40000000001FE; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2274271\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'hB818EA2A5D2D59C9; + ReadData3E = 64'h3C3933386F530E46; + ans = 64'h3C3932711E0024DB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2275272\n"); + end + ReadData1E = 64'hC80FFFFE02000000; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h000100007FFFFFFE; + ans = 64'h44CFFFFE01FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2276273\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'hC617FFFFE0000000; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2277274\n"); + end + ReadData1E = 64'h3F3FFFFFFE000006; + ReadData2E = 64'h40A5033128DB01E6; + ReadData3E = 64'h000664A931B4E926; + ans = 64'h3FF50331278ACED7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2278275\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2279276\n"); + end + ReadData1E = 64'hC3C00FFFF0000000; + ReadData2E = 64'h2B7007FFFFFFFFF8; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2280277\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'hC36FFF80000007FF; + ans = 64'hC370FFC000000400; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2281278\n"); + end + ReadData1E = 64'h4010000041FFFFFF; + ReadData2E = 64'hC0C0000004000080; + ReadData3E = 64'h403FD0D834A9AD75; + ans = 64'hC0DFF80C55F2D6B4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2282279\n"); + end + ReadData1E = 64'hC1D0FFFFEFFFFFFF; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'h0010000000000000; + ans = 64'h41D0FFFFEFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2283280\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h3F90000000BFFFFF; + ReadData3E = 64'hC1D7B38D01A5E050; + ans = 64'h42DFFFE84DF2FE58; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2284281\n"); + end + ReadData1E = 64'hC7E1FFFFFFFF7FFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFC3F; + ans = 64'hFFFFFFFFFFFFFC3F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2285282\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'hA917BC9E40178002; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2286283\n"); + end + ReadData1E = 64'hC1EB26941C6830E5; + ReadData2E = 64'hF61FFE0000000000; + ReadData3E = 64'h40DBFFFFFFFFEFFE; + ans = 64'h781B24E1B3266A62; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2287284\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hC35FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2288285\n"); + end + ReadData1E = 64'hC31004000001FFFE; + ReadData2E = 64'hB8001FFFFFFFFDFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFEFDBF7FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2289286\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h43400000200007FE; + ans = 64'hC357FFFFEFFFFC01; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2290287\n"); + end + ReadData1E = 64'hC3FFC0000000001E; + ReadData2E = 64'hC0CF14C0E0C04A28; + ReadData3E = 64'hBBFC2524412B44CA; + ans = 64'h44DED6975EFEC9B1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2291288\n"); + end + ReadData1E = 64'hC19D57CE1459DFE8; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2292289\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'h4030003FFFFFFFFD; + ReadData3E = 64'hFFDFFFFFBFFFFFBE; + ans = 64'hFFDFFFFFBFFFFFBE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2293290\n"); + end + ReadData1E = 64'hC01EFFFFFFFFFF7E; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h800000803FFFFFFE; + ans = 64'h436EFFFFFFFFFF80; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2294291\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'hB7EF0000007FFFFF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2295292\n"); + end + ReadData1E = 64'hC01000000001F7FE; + ReadData2E = 64'h4A2000000000000E; + ReadData3E = 64'hB7E892223301428F; + ans = 64'hCA4000000001F80C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2296293\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2297294\n"); + end + ReadData1E = 64'hBFBFFFFFF00000FF; + ReadData2E = 64'hAC42C55C992BC474; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2298295\n"); + end + ReadData1E = 64'h4340000000000000; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h3B400000000007EF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2299296\n"); + end + ReadData1E = 64'h364FFFFE000007FF; + ReadData2E = 64'h41CFFFFFFFC0001F; + ReadData3E = 64'hC0A0000000000000; + ans = 64'hC0A0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2300297\n"); + end + ReadData1E = 64'h4BA6377A628551B5; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2301298\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h40107FFFFFFBFFFE; + ReadData3E = 64'hB81FFFFBFFDFFFFF; + ans = 64'h43607FFFFFFBFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2302299\n"); + end + ReadData1E = 64'hC1F00007FC000000; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h7FF0000000800010; + ans = 64'h7FF8000000800010; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2303300\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'hBFE9B5C26D37C823; + ReadData3E = 64'h8010000000000001; + ans = 64'hC339B5C26D37C825; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2304301\n"); + end + ReadData1E = 64'h3FD2100000000000; + ReadData2E = 64'hBFE1FBFFFFFFFFFF; + ReadData3E = 64'h7FE30DFD00E05080; + ans = 64'h7FE30DFD00E05080; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2305302\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h0360000000000003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2306303\n"); + end + ReadData1E = 64'hBFF00000010007FF; + ReadData2E = 64'h400FFFFF7FFFFF7F; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401000003EFFF844; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2307304\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'hBDB0000024000000; + ans = 64'hBDB0000024000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2308305\n"); + end + ReadData1E = 64'h3C0FFFFFFFFFFFFF; + ReadData2E = 64'h328CE3A138B8054C; + ReadData3E = 64'h3FDD43CEE6D7C2DD; + ans = 64'h3FDD43CEE6D7C2DD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2309306\n"); + end + ReadData1E = 64'hC030000001FFFFEF; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FCFFFFFFFFFFF80; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2310307\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h400944294F0F93DA; + ReadData3E = 64'h802FFFFFF7FF7FFF; + ans = 64'h435944294F0F93DC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2311308\n"); + end + ReadData1E = 64'h3F9000007FFFFFE0; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'hB47FFDEFFFFFFFFF; + ans = 64'h3F7000007FFFFFE0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2312309\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'hBFDFFC000000007F; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2313310\n"); + end + ReadData1E = 64'h3FB001F800000000; + ReadData2E = 64'h3FCD393761A582AB; + ReadData3E = 64'h40004000000001FF; + ans = 64'h40005D3CCFEBF806; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2314311\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2315312\n"); + end + ReadData1E = 64'hBDD0000003FFFC00; + ReadData2E = 64'h3FF0000003C00000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFF000000003FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2316313\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'hB1DE080000000000; + ans = 64'h4340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2317314\n"); + end + ReadData1E = 64'h3FCFF000000007FE; + ReadData2E = 64'hBFAFFFFFFFFF801F; + ReadData3E = 64'hC0ACAD1E52AF5AA9; + ans = 64'hC0ACAD264EAF5AA9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2318315\n"); + end + ReadData1E = 64'hBCA65FB4E73E2946; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h8000000000000000; + ans = 64'hBCA65FB4E73E2947; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2319316\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'hC02FFFFFEFFFFBFF; + ReadData3E = 64'hC01FFFF7FFFFFBFE; + ans = 64'hC37FFFFFEFFFFC01; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2320317\n"); + end + ReadData1E = 64'h41D00000017FFFFF; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'hC0100000000FBFFF; + ans = 64'h41E0000000FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2321318\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h418FFFFDFFFFFFF0; + ReadData3E = 64'h4000000000000001; + ans = 64'h44DFFFFDFFFFFFF2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2322319\n"); + end + ReadData1E = 64'hC03001FFFDFFFFFF; + ReadData2E = 64'hC14C2D5D86AF9AF2; + ReadData3E = 64'h3FC00010007FFFFF; + ans = 64'h418C30E32FDAC633; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2323320\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h435FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2324321\n"); + end + ReadData1E = 64'hBFCDBFFFFFFFFFFE; + ReadData2E = 64'h383FFFFFCFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hB81DBFFFD35FFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2325322\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h43C49084FAA94D08; + ans = 64'h43C51084FAA94D08; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2326323\n"); + end + ReadData1E = 64'hBFF0000000000200; + ReadData2E = 64'h40FFFFFFFF000040; + ReadData3E = 64'h41D088C6B649261D; + ans = 64'h41D08846B6492A1D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2327324\n"); + end + ReadData1E = 64'hC3FFFFFE0007FFFF; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'hC340000000000000; + ans = 64'hC74FFFFE0007FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2328325\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'hC3FFFFFF7FFFDFFE; + ReadData3E = 64'h6A30000007FFFEFE; + ans = 64'h6A30000007FFFEFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2329326\n"); + end + ReadData1E = 64'h000FFFFEFFFF7FFF; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h000FFFFFDFFFFFEF; + ans = 64'h036FFFFDFFFEFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2330327\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'hBFFFFFFFF7FFBFFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hC34FFFFFF7FFC001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2331328\n"); + end + ReadData1E = 64'h3F8000803FFFFFFF; + ReadData2E = 64'h406FA361850F01C6; + ReadData3E = 64'h3FDFFFFFEFFFF7FF; + ans = 64'h4003D22F8D545728; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2332329\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2333330\n"); + end + ReadData1E = 64'hC42FFFFEFFFFFFFB; + ReadData2E = 64'h468000001FFBFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2334331\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'hC7EBEFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2335332\n"); + end + ReadData1E = 64'h380E1E7932012E39; + ReadData2E = 64'hC3DFDFFFDFFFFFFF; + ReadData3E = 64'h5124BEE70410AACA; + ans = 64'h5124BEE70410AACA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2336333\n"); + end + ReadData1E = 64'hBF0261C42FFA2644; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2337334\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFBA; + ReadData3E = 64'hBF000003FFFFFFBF; + ans = 64'hFFFFFFFFFFFFFFBA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2338335\n"); + end + ReadData1E = 64'hB813FFFBFFFFFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hC1CB67DAF0FB3AC1; + ans = 64'hC1CB67DAF0FB3AC1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2339336\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h401FFE007FFFFFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h436FFE0080000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2340337\n"); + end + ReadData1E = 64'h47F0020010000000; + ReadData2E = 64'h4000000004800000; + ReadData3E = 64'h41D284201D393DFF; + ans = 64'h4800020014809005; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2341338\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h8370000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2342339\n"); + end + ReadData1E = 64'hC800000000200100; + ReadData2E = 64'hBFE83E5C0C388FA8; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h47F83E5C0C690DE4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2343340\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h1C30007FFFFF7FFE; + ans = 64'hBFF0000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2344341\n"); + end + ReadData1E = 64'hB810001000007FFE; + ReadData2E = 64'h3FCFFBE08E8464EE; + ReadData3E = 64'hBFCF80000000FFFF; + ans = 64'hBFCF80000000FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2345342\n"); + end + ReadData1E = 64'hB7E4C9BCC4E8952C; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2346343\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h3FF2E79D6FC4359F; + ReadData3E = 64'hC3C0000000FFF800; + ans = 64'hC3BFDA30C7206795; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2347344\n"); + end + ReadData1E = 64'h41B00000001FFFE0; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h31AFFC00FFFFFFFF; + ans = 64'hC1A00000001FFFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2348345\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h7FDEFFFFFFFFFFBF; + ReadData3E = 64'h4340000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2349346\n"); + end + ReadData1E = 64'hC00000000801FFFE; + ReadData2E = 64'h4345E454BA811D40; + ReadData3E = 64'hAB64F226D8CABCA4; + ans = 64'hC355E454C5760425; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2350347\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC354000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2351348\n"); + end + ReadData1E = 64'h3FB8BD93408EBDE8; + ReadData2E = 64'hB9700000037FFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2352349\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hFFD9CE11F582EC5D; + ans = 64'hFFD9CE11F582EC5D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2353350\n"); + end + ReadData1E = 64'hC3CC000FFFFFFFFE; + ReadData2E = 64'hC7100000000FFFBF; + ReadData3E = 64'hFFFFBFFFFFFEFFFF; + ans = 64'hFFFFBFFFFFFEFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2354351\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2355352\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'hACCFFFFFFFC00010; + ReadData3E = 64'h4063FFFF7FFFFFFF; + ans = 64'h4063FFFF7FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2356353\n"); + end + ReadData1E = 64'h315FFFFFF8080000; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hBFF00000008003FE; + ans = 64'hBFF00000008003FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2357354\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h434FFEFFFFFFE000; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h469FFEFFFFFFE002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2358355\n"); + end + ReadData1E = 64'h3FBF0049863669F2; + ReadData2E = 64'h00268B062D1A3331; + ReadData3E = 64'h3C8268A6CE3573DE; + ans = 64'h3C8268A6CE3573DE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2359356\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hC360000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2360357\n"); + end + ReadData1E = 64'h41E0000000000003; + ReadData2E = 64'h7FDFF8000000FFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2361358\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hC3EFFF80FFFFFFFF; + ans = 64'hC3F00FC07FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2362359\n"); + end + ReadData1E = 64'h47FFFFFFFFFFDBFF; + ReadData2E = 64'hC3DFFFFFFF80000F; + ReadData3E = 64'h41C34F065F9D00D5; + ans = 64'hCBEFFFFFFF7FDC0E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2363360\n"); + end + ReadData1E = 64'hC3CFE007FFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'h472FE007FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2364361\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h3FC0800800000000; + ReadData3E = 64'hB95000008000000E; + ans = 64'h4310800800000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2365362\n"); + end + ReadData1E = 64'h3E7EFFFFFFFFF7FF; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h43E9ED6243E62232; + ans = 64'hFE6EFFFFFFFFF7FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2366363\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'h3AF8D6509AA53EEB; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3E48D6509EA53EED; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2367364\n"); + end + ReadData1E = 64'h001DFEFFFFFFFFFF; + ReadData2E = 64'hBFD00000003FE000; + ReadData3E = 64'hBFE0000020000007; + ans = 64'hBFE0000020000007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2368365\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2369366\n"); + end + ReadData1E = 64'hB77FBFDFFFFFFFFF; + ReadData2E = 64'hB7FFFFDBFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2370367\n"); + end + ReadData1E = 64'h4340000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'hC3F0037FFFFFFFFF; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2371368\n"); + end + ReadData1E = 64'h39EFFF8800000000; + ReadData2E = 64'h48400020FFFFFFFE; + ReadData3E = 64'hC03FFFFFF8000000; + ans = 64'h423FFFC9FEE87FFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2372369\n"); + end + ReadData1E = 64'h7FF6AD12BCAD8706; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h7FFEAD12BCAD8706; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2373370\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h3FB0000001000400; + ReadData3E = 64'hBEB1FFFFFFE00000; + ans = 64'h43100000010003FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2374371\n"); + end + ReadData1E = 64'h37F00000000007DE; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h3F500000000080FE; + ans = 64'h3F500000000080FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2375372\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h3CAC90CC85968996; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2376373\n"); + end + ReadData1E = 64'h3FE01FDFFFFFFFFF; + ReadData2E = 64'h41FEFFFFFDFFFFFE; + ReadData3E = 64'hC3DA991757D4B88E; + ans = 64'hC3DA991757963D0A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2377374\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2378375\n"); + end + ReadData1E = 64'h3FD86FA56F3E7889; + ReadData2E = 64'h43FE7CBD3B643346; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h43E747EC3A1D192E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2379376\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'hC1EB716CBF1AF239; + ans = 64'hC1EB716CBE9AF239; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2380377\n"); + end + ReadData1E = 64'h3E90000020000002; + ReadData2E = 64'hC1FF80000000FFFF; + ReadData3E = 64'h3E50000000000480; + ans = 64'hC09F80003F000003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2381378\n"); + end + ReadData1E = 64'h800BD97443D1F8E7; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'h000D09A2EF0B81C6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2382379\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h43EB3206C88FF653; + ReadData3E = 64'h002FFFFFEFC00000; + ans = 64'h474B3206C88FF652; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2383380\n"); + end + ReadData1E = 64'hC00FFDFFFFFEFFFF; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hC1C00000004003FF; + ans = 64'hC1C00000013FF3FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2384381\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'hFFFFFFFFFF003FFE; + ReadData3E = 64'hC010000000000001; + ans = 64'hFFFFFFFFFF003FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2385382\n"); + end + ReadData1E = 64'h3927B3F68C3FD021; + ReadData2E = 64'h41EFFFFE04000000; + ReadData3E = 64'h3F90600000000000; + ans = 64'h3F90600000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2386383\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4350000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2387384\n"); + end + ReadData1E = 64'h000FFC0002000000; + ReadData2E = 64'h43D0000020FFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2388385\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'hBFCFFFEFFFFFFDFF; + ans = 64'h4350000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2389386\n"); + end + ReadData1E = 64'h3E1FFFFFEFFFFFFC; + ReadData2E = 64'h3FDF8000007FFFFE; + ReadData3E = 64'hC80A678A72CE5305; + ans = 64'hC80A678A72CE5305; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2390387\n"); + end + ReadData1E = 64'hC1FFFFFFFFFFC00E; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2391388\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'hBA9BFFFFFFFFF7FF; + ReadData3E = 64'h403ED10D6563700E; + ans = 64'h403ED10D6561B00E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2392389\n"); + end + ReadData1E = 64'h403170F05EC62E81; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h405FFFFFFEFFFFF7; + ans = 64'h4068B8782EE3173C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2393390\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'hD8F0FFFFFFFFFFFF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hDC50FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2394391\n"); + end + ReadData1E = 64'h3FD0000000FFFBFF; + ReadData2E = 64'hC037FFFFFFF80000; + ReadData3E = 64'h401FFFFFFFFFFFC8; + ans = 64'h3FFFFFFFFA201726; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2395392\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h437FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2396393\n"); + end + ReadData1E = 64'hC00FFF0000000FFF; + ReadData2E = 64'h3FC00401FFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2397394\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h420FFFFFFFF0001E; + ans = 64'h46A0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2398395\n"); + end + ReadData1E = 64'h43CFFE0001FFFFFF; + ReadData2E = 64'h3FCFFFFC0000001F; + ReadData3E = 64'h43A76FA3F183A2E3; + ans = 64'h43BBB6CFF9E1D160; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2399396\n"); + end + ReadData1E = 64'h3F69D69FD8BBDB20; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'h42C9D69FD8BBDA1E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2400397\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h801FFFFFF800FFFE; + ReadData3E = 64'hBFCA8A3109338C32; + ans = 64'hBFCA8A3109338C32; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2401398\n"); + end + ReadData1E = 64'hC0F0000000203FFF; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hC921FFFFFFFFFEFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2402399\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h3FF00000107FFFFF; + ReadData3E = 64'h8010000000000001; + ans = 64'h43500000107FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2403400\n"); + end + ReadData1E = 64'hC3E07FFFFFFFEFFF; + ReadData2E = 64'h3FD0007FFFFFBFFF; + ReadData3E = 64'hBE4FFFFFE3FFFFFE; + ans = 64'hC3C08083FFFFADFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2404401\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2405402\n"); + end + ReadData1E = 64'h7FEDFFFFFFDFFFFF; + ReadData2E = 64'hC7F0400000000008; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2406403\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h37E3EF900B48D9D0; + ans = 64'h37E3EF900B48D9D0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2407404\n"); + end + ReadData1E = 64'hC03F72D7D4047A88; + ReadData2E = 64'hC08B52A0F1D1872E; + ReadData3E = 64'h380FFFFFFBFFFFFC; + ans = 64'h40DADA1A8FD10B53; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2408405\n"); + end + ReadData1E = 64'h405201FFFFFFFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2409406\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h43D0000102000000; + ReadData3E = 64'hBFC01000000000FE; + ans = 64'h4730000101FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2410407\n"); + end + ReadData1E = 64'h47E001FFE0000000; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'hAE7515ED88BF468B; + ans = 64'hAE7515ED88BF468B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2411408\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h440914B9F10C1CCD; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2412409\n"); + end + ReadData1E = 64'hCBECA4E4CF825A01; + ReadData2E = 64'h41E8658A789B2CF7; + ReadData3E = 64'hF697FFFFF7FFFFFE; + ans = 64'hF697FFFFF7FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2413410\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2414411\n"); + end + ReadData1E = 64'hBFF0000001FFFFFD; + ReadData2E = 64'hC0100003FFFFBFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h4008000803FF80F8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2415412\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h3FC81164DC6B752C; + ans = 64'hC00E7EE9B23948AA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2416413\n"); + end + ReadData1E = 64'h3FFFFFFFFFFC00FE; + ReadData2E = 64'hBF9FFFFFFF00003F; + ReadData3E = 64'h3B3FFFFF803FFFFF; + ans = 64'hBFAFFFFFFEFC013D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2417414\n"); + end + ReadData1E = 64'hB6931FEF08BD391F; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'h36831FEF08BD391E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2418415\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'hFFD0000008FFFFFE; + ReadData3E = 64'hC03FFFFFFFFFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2419416\n"); + end + ReadData1E = 64'hC2A0001008000000; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'hC1C8DEA833D5643D; + ans = 64'h428FFE92257CC2AC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2420417\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h47F00000807FFFFF; + ReadData3E = 64'h4000000000000001; + ans = 64'h4B500000807FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2421418\n"); + end + ReadData1E = 64'hB8020AE775604F99; + ReadData2E = 64'h00100008003FFFFE; + ReadData3E = 64'h41CFFFFFFFDFFFFE; + ans = 64'h41CFFFFFFFDFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2422419\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC350000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2423420\n"); + end + ReadData1E = 64'hFFDFFFFF80003FFF; + ReadData2E = 64'hC56FFFFFFDFFBFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2424421\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFF800001FFF; + ans = 64'hC35FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2425422\n"); + end + ReadData1E = 64'hBF8FEFFFFFFFFFFA; + ReadData2E = 64'hC7EFFFFFFDFFFEFE; + ReadData3E = 64'hC3C00000000017FE; + ans = 64'h478FEFFFFE00FEF9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2426423\n"); + end + ReadData1E = 64'hC0705FE320986F95; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'hC33FFFFFFFFFFDF4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2427424\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h44100007FFEFFFFF; + ReadData3E = 64'hBFFFFFFFFFFC01FF; + ans = 64'h47700007FFEFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2428425\n"); + end + ReadData1E = 64'hC036A404824F181C; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'hC7E0000007FFFFF7; + ans = 64'hC7E0000007FFFFF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2429426\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h40FD7B96E7F663E6; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h445D7B96E7F663E5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2430427\n"); + end + ReadData1E = 64'hBB94AE95EFBE4237; + ReadData2E = 64'h43D000000000801F; + ReadData3E = 64'hC3486E30DC92FE14; + ans = 64'hC3486E30DC92FE14; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2431428\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC69FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2432429\n"); + end + ReadData1E = 64'h401FC00000000800; + ReadData2E = 64'h3FC574B78D44FE9F; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2433430\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'hB81000000000081E; + ans = 64'hC6AFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2434431\n"); + end + ReadData1E = 64'h41D1000080000000; + ReadData2E = 64'hBFD020001FFFFFFF; + ReadData3E = 64'hC7E1FFFFFFFFF7FF; + ans = 64'hC7E1FFFFFFFFF7FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2435432\n"); + end + ReadData1E = 64'h41DFFFFFFFE00003; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2436433\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h7FF48994C25367F7; + ReadData3E = 64'hB7ED9F1E479DECED; + ans = 64'h7FFC8994C25367F7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2437434\n"); + end + ReadData1E = 64'hC3D667B1C9B7AA5C; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h32FFA9FC17350EB9; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2438435\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'h4800100007FFFFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h4B60100007FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2439436\n"); + end + ReadData1E = 64'hB7F8002000000000; + ReadData2E = 64'hC02337477501F342; + ReadData3E = 64'hBFD0000003FFF000; + ans = 64'hBFD0000003FFF000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2440437\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFF; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2441438\n"); + end + ReadData1E = 64'h3807C860ED30F045; + ReadData2E = 64'h3B3F00000FFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2442439\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h343040FFFFFFFFFE; + ans = 64'h343040FFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2443440\n"); + end + ReadData1E = 64'hC7F080000003FFFF; + ReadData2E = 64'hBFCFFFFFF807FFFF; + ReadData3E = 64'h40AFFFFEFFFFFFF7; + ans = 64'h47D07FFFFBE81FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2444441\n"); + end + ReadData1E = 64'hC9200000201FFFFF; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2445442\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h41D000008FFFFFFE; + ReadData3E = 64'h43EFFEFFFDFFFFFF; + ans = 64'h453000018FF7FFED; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2446443\n"); + end + ReadData1E = 64'hB81FE04000000000; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h279A67D73BF0ADD7; + ans = 64'h279A67D73BF0ADD7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2447444\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hC000000000FFFF7F; + ReadData3E = 64'h4340000000000001; + ans = 64'hC358000001FFFEFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2448445\n"); + end + ReadData1E = 64'h3FEFFFFFFFFF83FF; + ReadData2E = 64'h7FFFFFFFEF7FFFFE; + ReadData3E = 64'h40DF68E3CA745F55; + ans = 64'h7FFFFFFFEF7FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2449446\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2450447\n"); + end + ReadData1E = 64'hC1F0000000037FFF; + ReadData2E = 64'h7FDFFFFFFFF7FFC0; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2451448\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h41EDFFFFFFFE0000; + ans = 64'h43300000F0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2452449\n"); + end + ReadData1E = 64'hB7E0000020000FFF; + ReadData2E = 64'hBFFFFFBFFFFFFFF6; + ReadData3E = 64'h4BBFFFFFFFBFFFF7; + ans = 64'h4BBFFFFFFFBFFFF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2453450\n"); + end + ReadData1E = 64'h480EFB187297B81E; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2454451\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h406FFFEFEFFFFFFE; + ReadData3E = 64'h3FC267F46B349F16; + ans = 64'h43CFFFEFEFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2455452\n"); + end + ReadData1E = 64'hBFCEF3F50691EB77; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'hBFC000020001FFFE; + ans = 64'hBFD779FB8349F5BA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2456453\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hBFE000007FFFFFFE; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hC34000007FFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2457454\n"); + end + ReadData1E = 64'h1C5F0FFFFFFFFFFF; + ReadData2E = 64'hC800000000001FFA; + ReadData3E = 64'h692846A03EDAB3CB; + ans = 64'h692846A03EDAB3CB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2458455\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h435FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2459456\n"); + end + ReadData1E = 64'hC34B70BD97B4C311; + ReadData2E = 64'hC1D8AD4964831E23; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h45352926A224FD7A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2460457\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'hC22C1AE32436619C; + ans = 64'h435FFFFC7CA39B77; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2461458\n"); + end + ReadData1E = 64'h4709591E944BE6C6; + ReadData2E = 64'hB4FE00000000001F; + ReadData3E = 64'h3FB00FFEFFFFFFFE; + ans = 64'h3FB00FFEFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2462459\n"); + end + ReadData1E = 64'h3FCFFFFFF001FFFF; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'h4013FFFFFE004000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2463460\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h3CEFFFFFFFBFFFF8; + ReadData3E = 64'h43F88FFBED60786A; + ans = 64'h43F88FFBED60786A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2464461\n"); + end + ReadData1E = 64'hFFEBFFFFFFFFFBFF; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hBF20001FFFFFFFE0; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2465462\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hC0D797459D1E982A; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hC43797459D1E9829; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2466463\n"); + end + ReadData1E = 64'hC698001FFFFFFFFF; + ReadData2E = 64'h41DFFFFF7BFFFFFF; + ReadData3E = 64'hC0B00001FFFEFFFF; + ans = 64'hC888001F9CFF7BFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2467464\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h46A0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2468465\n"); + end + ReadData1E = 64'hC3D2733A4B2D9BCA; + ReadData2E = 64'hC02FF80000003FFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h44126D9D7C9AF548; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2469466\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h402F367B74D7384C; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2470467\n"); + end + ReadData1E = 64'hFFE000020001FFFF; + ReadData2E = 64'h7FDFDFFFF7FFFFFF; + ReadData3E = 64'h41D000083FFFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2471468\n"); + end + ReadData1E = 64'h358FFD7FFFFFFFFF; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h758FFD7FFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2472469\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hC1D38BF427D14CF0; + ReadData3E = 64'h4319CA0F8BF10259; + ans = 64'hC5338BF427CADA6B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2473470\n"); + end + ReadData1E = 64'h002FFFFE01000000; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h43CE48C3C6092984; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2474471\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hAD50000003FFFFEE; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2475472\n"); + end + ReadData1E = 64'h41DFFC0000001FFF; + ReadData2E = 64'h3FD55AD233051900; + ReadData3E = 64'hB81FFFFFFDFF7FFF; + ans = 64'h41C55826D8BECDB7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2476473\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2477474\n"); + end + ReadData1E = 64'h801000003F000000; + ReadData2E = 64'hB14FBFFFFFFFFFFC; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2478475\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFAFFFF; + ans = 64'h7FEFFFFFFFFAFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2479476\n"); + end + ReadData1E = 64'h403FFFFFF000000E; + ReadData2E = 64'h3FE0000040004000; + ReadData3E = 64'hB7E000000FFFDFFF; + ans = 64'h4030000038003FE7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2480477\n"); + end + ReadData1E = 64'hBFE041FFFFFFFFFF; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'h002020FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2481478\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h7FF07FFFFFFFFFF7; + ReadData3E = 64'h3FC0BFFFFFFFFFFF; + ans = 64'h7FF87FFFFFFFFFF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2482479\n"); + end + ReadData1E = 64'h400000FFFFDFFFFE; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h43D0000FF7FFFFFE; + ans = 64'h43D0000FF7FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2483480\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hBFDFF60000000000; + ReadData3E = 64'hC010000000000001; + ans = 64'hC33FF60000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2484481\n"); + end + ReadData1E = 64'h3FCDFFFFFFFFFFFD; + ReadData2E = 64'hC46FFFFFF0010000; + ReadData3E = 64'hC06244DC9FB9F1B9; + ans = 64'hC44DFFFFF100EFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2485482\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hC32FFFFFFFFFFFEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2486483\n"); + end + ReadData1E = 64'hBFBFFF7FFFFDFFFF; + ReadData2E = 64'hC020000080000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h3FEFFF80FFF9FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2487484\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'hC070000000FC0000; + ans = 64'hC34000000000007F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2488485\n"); + end + ReadData1E = 64'hC07A49F64C8E33A7; + ReadData2E = 64'hC09FBFFFFFFFFFE0; + ReadData3E = 64'h7FED152E9B8D9926; + ans = 64'h7FED152E9B8D9926; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2489486\n"); + end + ReadData1E = 64'h401FFFFB80000000; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2490487\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hB8000001FFFDFFFF; + ReadData3E = 64'hBFD3FFFEFFFFFFFE; + ans = 64'hBFD3FFFEFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2491488\n"); + end + ReadData1E = 64'h4020000000030000; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h0027F73D8D3EDC65; + ans = 64'hC02000000002FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2492489\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hDB9FFFFFFFFFE3FF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hDEFFFFFFFFFFE3FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2493490\n"); + end + ReadData1E = 64'h3FCFFFFE07FFFFFE; + ReadData2E = 64'h3D1000000007FFBE; + ReadData3E = 64'h3CAFFFFDFFE00000; + ans = 64'h3CF0FFFEF406FFBD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2494491\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hC35FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2495492\n"); + end + ReadData1E = 64'h401C0FFFFFFFFFFF; + ReadData2E = 64'h47CAC08F3272F1E8; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2496493\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h43C0000207FFFFFF; + ans = 64'h43BF00040FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2497494\n"); + end + ReadData1E = 64'h3FAFFFFFFFFFC03F; + ReadData2E = 64'h3FBFFDFFFFFFFEFE; + ReadData3E = 64'h45FFFFF700000000; + ans = 64'h45FFFFF700000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2498495\n"); + end + ReadData1E = 64'h3FDFF00100000000; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'hC000000000000000; + ans = 64'hC00FF80080000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2499496\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hB7FFFF7FFBFFFFFF; + ReadData3E = 64'h400E2DBCCAD11E91; + ans = 64'h400E2DBCCAD11E91; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2500497\n"); + end + ReadData1E = 64'h3FC0000000000008; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hC80FFFF00000003E; + ans = 64'hC80FFFF00000003E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2501498\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hBFD0400001FFFFFF; + ReadData3E = 64'h8010000000000001; + ans = 64'hC330400001FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2502499\n"); + end + ReadData1E = 64'hC91B7FFFFFFFFFFF; + ReadData2E = 64'hC1CFFFFBFFFFFBFF; + ReadData3E = 64'h7FEFFFFFEF000000; + ans = 64'h7FEFFFFFEF000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2503500\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hC6AFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2504501\n"); + end + ReadData1E = 64'hBFE28189159195B8; + ReadData2E = 64'hBFF80000001FFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4021BC24DA07F639; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2505502\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'hBF1FFFFFC00003FF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2506503\n"); + end + ReadData1E = 64'h3FF00000E0000000; + ReadData2E = 64'h415003FFFEFFFFFF; + ReadData3E = 64'hBFEFFF80FFFFFFFF; + ans = 64'h415004009F38FDF1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2507504\n"); + end + ReadData1E = 64'hC1BFDFFFFFFF7FFF; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2508505\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h002FFFFFFFFF07FF; + ReadData3E = 64'hFFDFFFFFFFFFFE40; + ans = 64'hFFDFFFFFFFFFFE40; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2509506\n"); + end + ReadData1E = 64'h43C7F7FFFFFFFFFF; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'h4040000000008040; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2510507\n"); + end + ReadData1E = 64'h434FFFFFFFFFFFFE; + ReadData2E = 64'h422E5404451AE6E1; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2511508\n"); + end + ReadData1E = 64'hC1100001FFFFFFDF; + ReadData2E = 64'hC02FE0007FFFFFFF; + ReadData3E = 64'h2500000000000000; + ans = 64'h414FE0047C000FBD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2512509\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2513510\n"); + end + ReadData1E = 64'h41DF803FFFFFFFFF; + ReadData2E = 64'h43BFFDFBFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h45AF7E440BF7FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2514511\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h801A981A81942355; + ans = 64'h4000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2515512\n"); + end + ReadData1E = 64'hC052639BBA0F2877; + ReadData2E = 64'h4B10003FC0000000; + ReadData3E = 64'h404E5A50747D0AD0; + ans = 64'hCB7263E4FEEFA1CB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2516513\n"); + end + ReadData1E = 64'h403FFFF7FFFBFFFF; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'h006FFFF7FFFBFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2517514\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h3F0E00000003FFFE; + ReadData3E = 64'h7FEFFFFFFFFFBDFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2518515\n"); + end + ReadData1E = 64'h0350000000000FBF; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'hC01FFF7FEFFFFFFF; + ans = 64'hC01FFF7FEFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2519516\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'hBAC000010000000E; + ReadData3E = 64'h4000000000000001; + ans = 64'hFAB000010000000E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2520517\n"); + end + ReadData1E = 64'h3FEFFE000000003F; + ReadData2E = 64'h401FFFFFFFE07FFF; + ReadData3E = 64'h33E0000000000401; + ans = 64'h401FFDFFFFE08236; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2521518\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h7FC0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2522519\n"); + end + ReadData1E = 64'h41C6122B671A4280; + ReadData2E = 64'h3FE00000000FFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h41B6122B673054AA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2523520\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h3FCB96FE7D35EAB1; + ans = 64'h7FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2524521\n"); + end + ReadData1E = 64'h25AFFFFFFFFDFBFE; + ReadData2E = 64'hBEEE000800000000; + ReadData3E = 64'hBFF0000FFFFFFFDE; + ans = 64'hBFF0000FFFFFFFDE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2525522\n"); + end + ReadData1E = 64'h42C0000000001FFD; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'hC33FDFFFFFFFFFC0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2526523\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h40200000000100FF; + ReadData3E = 64'h40000080001FFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2527524\n"); + end + ReadData1E = 64'h9FAFFFFFFFFFFFBC; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'hBFE0001FFFFFFBFF; + ans = 64'hBFE0001FFFFFFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2528525\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'hBFCFFFFFFFBFF7FF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hFFBFFFFFFFBFF7FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2529526\n"); + end + ReadData1E = 64'hBFFCAE3FA86A3E05; + ReadData2E = 64'h3FFD5BBF4186D7EA; + ReadData3E = 64'h3FB597222676E3F8; + ans = 64'hC009A36B8F3A40EC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2530527\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2531528\n"); + end + ReadData1E = 64'hB7EF7FFFFFFF8000; + ReadData2E = 64'h363FEBFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2532529\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFBFFFFFFFDF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2533530\n"); + end + ReadData1E = 64'h3E2FFAFFFFFFFFFE; + ReadData2E = 64'hC1B25130451872A8; + ReadData3E = 64'h3CA0000000000FF6; + ans = 64'hBFF24E53958DA6D4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2534531\n"); + end + ReadData1E = 64'h000D7FFFFFFFFFFE; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2535532\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h3807209719B2E835; + ReadData3E = 64'h3FEA74D799DE2B8E; + ans = 64'h77F7209719B2E835; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2536533\n"); + end + ReadData1E = 64'h3F42712396A12B2C; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'hC34FFEFFEFFFFFFF; + ans = 64'hC34FFCB1CB8D2BDA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2537534\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'hC1C0000001FFFFBF; + ReadData3E = 64'h0000000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2538535\n"); + end + ReadData1E = 64'h3FD00000002FFFFF; + ReadData2E = 64'h39A3480B0A494CEA; + ReadData3E = 64'h41EBFFFFFFFFBFFE; + ans = 64'h41EBFFFFFFFFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2539536\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2540537\n"); + end + ReadData1E = 64'hC80FFFDFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFC0007FF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC4CFFFDFFC000BFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2541538\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h2940000000FFF7FE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2542539\n"); + end + ReadData1E = 64'hC0500000040000FF; + ReadData2E = 64'hAD2CD7010EADDFD9; + ReadData3E = 64'h7FDFEFFFFFFFBFFF; + ans = 64'h7FDFEFFFFFFFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2543540\n"); + end + ReadData1E = 64'h3C0FD15853BE65D4; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2544541\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h41DD090FEA23ACF5; + ReadData3E = 64'hC990000000FFEFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2545542\n"); + end + ReadData1E = 64'h000FFFFFFFFFF8FF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'hC1EFFFFF8000FFFF; + ans = 64'hC1EFFFFF8000FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2546543\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h41F000000000080F; + ReadData3E = 64'h4340000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2547544\n"); + end + ReadData1E = 64'hD059D27AF1E40CF0; + ReadData2E = 64'h48A0000FFFFFFDFE; + ReadData3E = 64'h40AB90284DED9F8D; + ans = 64'hD909D294C45EFB97; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2548545\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2549546\n"); + end + ReadData1E = 64'hC015F63CD1A65B14; + ReadData2E = 64'hBCA000000000083F; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FE0000000000004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2550547\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h4C400003FFE00000; + ans = 64'h4C400003FFE00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2551548\n"); + end + ReadData1E = 64'hBFB00003FFFFF000; + ReadData2E = 64'hC120000000002003; + ReadData3E = 64'hFFE000007FFFFFFF; + ans = 64'hFFE000007FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2552549\n"); + end + ReadData1E = 64'h401BFFFFFFFFFE00; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2553550\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h21CFFFFFFFD7FFFF; + ReadData3E = 64'h00080000000001FF; + ans = 64'h61BFFFFFFFD7FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2554551\n"); + end + ReadData1E = 64'h409FFFDFFFF7FFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hBFC8000000004000; + ans = 64'hBFC8000000008000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2555552\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h3FD00008000001FE; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h7FC00008000001FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2556553\n"); + end + ReadData1E = 64'hACB70DD6AF88BB72; + ReadData2E = 64'hBFBFFFFBFFFFDFFF; + ReadData3E = 64'hBC0D5E4660B40F5F; + ans = 64'hBC0D5E4660B40F5F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2557554\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hFFCFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2558555\n"); + end + ReadData1E = 64'h40F60501DEA97130; + ReadData2E = 64'h3FA8001FFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h40B083D76C00F38D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2559556\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h800FFFFFFFFFFFDB; + ans = 64'hFFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2560557\n"); + end + ReadData1E = 64'hC0500100000007FE; + ReadData2E = 64'hBF18C916C0C1517A; + ReadData3E = 64'hB7EFFDFFFFFFFFFF; + ans = 64'h3F78CAA3522D69F1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2561558\n"); + end + ReadData1E = 64'hC05A51DAA3F55483; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'h4010000000000000; + ans = 64'h405B51DAA3F55483; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2562559\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'hBFD03FFC00000000; + ReadData3E = 64'h001FFFDFFFFFFBFF; + ans = 64'hFFC03FFC00000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2563560\n"); + end + ReadData1E = 64'h001FFF0FFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFF7FFFFFE00; + ans = 64'h3FFFFFF7FFFFFE00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2564561\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'hC1D264933E9E988C; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2565562\n"); + end + ReadData1E = 64'h3FEFFFFFFBFFFDFF; + ReadData2E = 64'h43F49E68C134CC8B; + ReadData3E = 64'h497004000003FFFE; + ans = 64'h497004000003FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2566563\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2567564\n"); + end + ReadData1E = 64'h37E9A4F037FA9709; + ReadData2E = 64'h3FDFFFFF80000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2568565\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h403400003FFFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2569566\n"); + end + ReadData1E = 64'h381FFFFFF7FFFEFF; + ReadData2E = 64'h46F09D76E7CA5746; + ReadData3E = 64'hC3EEF24DCBAC54C8; + ans = 64'hC3EEF24DCBAC54C8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2570567\n"); + end + ReadData1E = 64'h802FBFFEFFFFFFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2571568\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h33DF1FFFFFFFFFFE; + ReadData3E = 64'hB7ECCB3C7089DF36; + ans = 64'h73CF1FFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2572569\n"); + end + ReadData1E = 64'hC1EFFFF800040000; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h002FFF000000003F; + ans = 64'h454FFFF80003FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2573570\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'h47FFDCCB68FFD88F; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2574571\n"); + end + ReadData1E = 64'hC02000001000003E; + ReadData2E = 64'h3F10020000003FFE; + ReadData3E = 64'hBFFFFFFFFFEFF800; + ans = 64'hC00001001FF8FC24; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2575572\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2576573\n"); + end + ReadData1E = 64'hBFCE89A6F51D8159; + ReadData2E = 64'h60A0000000FFFFFD; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hE07E89A6F7061BC3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2577574\n"); + end + ReadData1E = 64'h7FE0000000000000; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hB81E8CD337CE21D8; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2578575\n"); + end + ReadData1E = 64'h390054A9BD8416F9; + ReadData2E = 64'h40D984C8686E6F17; + ReadData3E = 64'hC02003FFFFBFFFFF; + ans = 64'hC02003FFFFBFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2579576\n"); + end + ReadData1E = 64'h38117A6B65B1F94A; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h0010000000000000; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2580577\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h7FF9844A5DC5A52A; + ReadData3E = 64'hBFF3FFFFFFFFFFFC; + ans = 64'h7FF9844A5DC5A52A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2581578\n"); + end + ReadData1E = 64'h3FBDFFFFFFFFFFF7; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h3FBE003FFFFFFFFF; + ans = 64'h3FBE003FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2582579\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h401A0311031E37C1; + ReadData3E = 64'hC010000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2583580\n"); + end + ReadData1E = 64'h463FFFFFFFFF3FFF; + ReadData2E = 64'h9D200801FFFFFFFF; + ReadData3E = 64'hC03FDFFFFFFFF800; + ans = 64'hC03FDFFFFFFFF800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2584581\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4024000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2585582\n"); + end + ReadData1E = 64'hC0000100003FFFFE; + ReadData2E = 64'hC0B0000002000100; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h40C00100024020FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2586583\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'hFFF000007FFFFBFF; + ans = 64'hFFF800007FFFFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2587584\n"); + end + ReadData1E = 64'h0000000000200002; + ReadData2E = 64'h3FC0000008000007; + ReadData3E = 64'h5EC76E22C8FFE598; + ans = 64'h5EC76E22C8FFE598; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2588585\n"); + end + ReadData1E = 64'h3FD5E83C0C07A5C0; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2589586\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hC3D0BFFFFFFFFFFF; + ReadData3E = 64'hA9817E19C25E6FFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2590587\n"); + end + ReadData1E = 64'hBE7003F000000000; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h51E0000040400000; + ans = 64'h51E0000040400000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2591588\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hC1C01FEFFFFFFFFE; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2592589\n"); + end + ReadData1E = 64'h3FFEFFFDFFFFFFFE; + ReadData2E = 64'h0018E3B362DE8E52; + ReadData3E = 64'h4300FBA8CF24D451; + ans = 64'h4300FBA8CF24D451; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2593590\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h7FD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2594591\n"); + end + ReadData1E = 64'hB8003FFFFF000000; + ReadData2E = 64'h528947BC743836AF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2595592\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hC17FFFFFFBFFF7FE; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2596593\n"); + end + ReadData1E = 64'h3FCFFA9FC0311F0F; + ReadData2E = 64'hBFDA6AFB777F4C09; + ReadData3E = 64'h400FFFCFFFFFFFFF; + ans = 64'h400F2C9BA5AB597E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2597594\n"); + end + ReadData1E = 64'hBDD00006FFFFFFFF; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000020001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2598595\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h37FFFFFF88000000; + ReadData3E = 64'h4E900000001BFFFF; + ans = 64'h77EFFFFF88000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2599596\n"); + end + ReadData1E = 64'h41C0000000009FFE; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h41FE60F74BF6F281; + ans = 64'h4201307BA5FB8D40; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2600597\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h00204001FFFFFFFF; + ReadData3E = 64'h8010000000000001; + ans = 64'h4010400200000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2601598\n"); + end + ReadData1E = 64'h3F8FFFFFFFFFBFFE; + ReadData2E = 64'h3D7FF00000000400; + ReadData3E = 64'hB7E00000100003FF; + ans = 64'h3D1FEFFFFFFFC41E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2602599\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2603600\n"); + end + ReadData1E = 64'h3FF72DDE89AA01F4; + ReadData2E = 64'h57800000000FF000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h57872DDE89C118A5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2604601\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h4D6802E789D6183B; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2605602\n"); + end + ReadData1E = 64'hC1E0004004000000; + ReadData2E = 64'h41F800001FFFFFFE; + ReadData3E = 64'hBFAFFFFFFFFC0004; + ans = 64'hC3E8006026008006; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2606603\n"); + end + ReadData1E = 64'h39DFFFFFF2000000; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000400; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2607604\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h47E0008000001FFF; + ReadData3E = 64'hBFB461CD0228D47A; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2608605\n"); + end + ReadData1E = 64'hBEB91D7089E95146; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h404FFFFFE0000002; + ans = 64'hC2191D7088E95145; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2609606\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h38D8000000020000; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2610607\n"); + end + ReadData1E = 64'hBFE040000000001E; + ReadData2E = 64'h47F0000100010000; + ReadData3E = 64'h3D700100FFFFFFFF; + ans = 64'hC7E040010401041E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2611608\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2612609\n"); + end + ReadData1E = 64'hBF503FFFFDFFFFFF; + ReadData2E = 64'h402FF800007FFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFF040EFBFF905FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2613610\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h3FC9500CF38284D9; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2614611\n"); + end + ReadData1E = 64'hC6900080007FFFFF; + ReadData2E = 64'h43E003FFFFFFFFC0; + ReadData3E = 64'hA43961880674A2A7; + ans = 64'hCA80048020801FBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2615612\n"); + end + ReadData1E = 64'h400FC00000007FFF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'h8000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2616613\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hBFD0000000003FFD; + ReadData3E = 64'hB7E000400000FFFF; + ans = 64'hFFC0000000003FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2617614\n"); + end + ReadData1E = 64'h43D00001FFFFFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'hBFB8B33EED4D94E3; + ans = 64'hBFB8B33EED4D94E3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2618615\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hF860000FFBFFFFFE; + ReadData3E = 64'h4000000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2619616\n"); + end + ReadData1E = 64'h3FA2EF5443C028E3; + ReadData2E = 64'h2CD000000003FFF0; + ReadData3E = 64'hFFD84705D4871593; + ans = 64'hFFD84705D4871593; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2620617\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC01FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2621618\n"); + end + ReadData1E = 64'hBFCFFFFF8003FFFE; + ReadData2E = 64'hC3E6D70743258B90; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h43C6D706E7CC4963; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2622619\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'hDF90000004000000; + ans = 64'hFC90000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2623620\n"); + end + ReadData1E = 64'hC1FE822C334DE664; + ReadData2E = 64'hC0251F3CCB90E98E; + ReadData3E = 64'hC1EFFE000000000F; + ans = 64'h4233234512A3A3B2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2624621\n"); + end + ReadData1E = 64'hC00000037FFFFFFE; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2625622\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hC1E29F751D0DB106; + ReadData3E = 64'h41DFF88000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2626623\n"); + end + ReadData1E = 64'h3FFFFFFFFFFF8100; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h41A07FFFFFFFFFF0; + ans = 64'h41A07FFFFDFFFFF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2627624\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h823FFF7BFFFFFFFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hC22FFF7C00008001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2628625\n"); + end + ReadData1E = 64'h40AFBFDFFFFFFFFF; + ReadData2E = 64'hDD7FC00000000001; + ReadData3E = 64'hBE39EAA554A8CA5D; + ans = 64'hDE3F806040000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2629626\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hFFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2630627\n"); + end + ReadData1E = 64'h3FBF800FFFFFFFFF; + ReadData2E = 64'h00100407FFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2631628\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'h3F93FFFF7FFFFFFE; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2632629\n"); + end + ReadData1E = 64'h3CA00001007FFFFF; + ReadData2E = 64'hC0CF00FFFFFFFFFE; + ReadData3E = 64'h434369CDC8B47FBB; + ans = 64'h434369CDC8B47FBB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2633630\n"); + end + ReadData1E = 64'h41F0008000100000; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hC20000800007FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2634631\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'h3FF3FFFFFFFFFFFF; + ReadData3E = 64'h41E3FFFFBFFFFFFF; + ans = 64'h7FE4000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2635632\n"); + end + ReadData1E = 64'h5E7EFFFFFFFFEFFE; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'h002FFFFFFFFFDF7F; + ans = 64'hDE8EFFFFFFFFF000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2636633\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hB7EFFBFFFFFFFF7F; + ReadData3E = 64'h0000000000000001; + ans = 64'hF7DFFBFFFFFFFF81; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2637634\n"); + end + ReadData1E = 64'h0FCFF80000000000; + ReadData2E = 64'h3FFC8F89BDB94125; + ReadData3E = 64'hC34FFFFDFFFFFFFF; + ans = 64'hC34FFFFDFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2638635\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2639636\n"); + end + ReadData1E = 64'hC05FFFFFFFFFFFFE; + ReadData2E = 64'h002000FFFFFBFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2640637\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h41E9BFBD1705AB74; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2641638\n"); + end + ReadData1E = 64'hB7EFFFEFFFFFFFEF; + ReadData2E = 64'hFFDE000000000007; + ReadData3E = 64'h40B803FFFFFFFFFE; + ans = 64'h77DDFFF0FFFFFFF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2642639\n"); + end + ReadData1E = 64'hA961FFFFFFFF7FFF; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2643640\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hC1FFFFC0007FFFFF; + ReadData3E = 64'hC0E00000003F8000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2644641\n"); + end + ReadData1E = 64'hC1C00000002000FF; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h449FFBFBFFFFFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2645642\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hBF8C1D0155B38468; + ReadData3E = 64'h4340000000000001; + ans = 64'hFF7C1D0155B3846A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2646643\n"); + end + ReadData1E = 64'h4BB000000003FFFF; + ReadData2E = 64'hBFF33352EBB2235A; + ReadData3E = 64'h3E86287347D241A7; + ans = 64'hCBB33352EBB6F02E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2647644\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2648645\n"); + end + ReadData1E = 64'hC01FFFFFFFFDFFDF; + ReadData2E = 64'hBCA080000000000E; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FE0000000000007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2649646\n"); + end + ReadData1E = 64'h7FE0000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'hE0F0001FDFFFFFFF; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2650647\n"); + end + ReadData1E = 64'hBFCC5FA8CDBDBA6A; + ReadData2E = 64'hBE0C001000000000; + ReadData3E = 64'hBF20000100003FFF; + ans = 64'hBF1FFFFEE5884383; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2651648\n"); + end + ReadData1E = 64'hCCBFFFFF7FFFFFEE; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2652649\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hC3CFFF000003FFFF; + ReadData3E = 64'hC01FFFFFEFBFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2653650\n"); + end + ReadData1E = 64'h400D1838BC0BFD79; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h3CA08FFFFFFFFFFF; + ans = 64'h3CA08FFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2654651\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h40064E618C7015FA; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2655652\n"); + end + ReadData1E = 64'h30B080000FFFFFFE; + ReadData2E = 64'hC3EE41476A2D4D44; + ReadData3E = 64'hFFD0000000003EFF; + ans = 64'hFFD0000000003EFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2656653\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h7C9FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2657654\n"); + end + ReadData1E = 64'h400E2207F41ABAF4; + ReadData2E = 64'hBCA000007FFFFF80; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hBCBE2208E52AF9A4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2658655\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h4131FFFFFFFFF7FF; + ans = 64'h7CAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2659656\n"); + end + ReadData1E = 64'hC00000FFC0000000; + ReadData2E = 64'h7FEFFFFFFFFF81FF; + ReadData3E = 64'h00199D0888644678; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2660657\n"); + end + ReadData1E = 64'h403FFFFFFE00FFFF; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h4010000000000000; + ans = 64'h4027FFFFFF008000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2661658\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h43FFFC0000080000; + ReadData3E = 64'h40AC7FFFFFFFFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2662659\n"); + end + ReadData1E = 64'h40923A760F2C6385; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'h449FFFFFFBFFFC00; + ans = 64'h449FFFFFFBFFFC00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2663660\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h480FFFFFFF7FFDFF; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2664661\n"); + end + ReadData1E = 64'h000968BF0FD31B9B; + ReadData2E = 64'h80001FFBFFFFFFFF; + ReadData3E = 64'h7FFFFFFFFF00001F; + ans = 64'h7FFFFFFFFF00001F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2665662\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2666663\n"); + end + ReadData1E = 64'h303FFFFFFBF7FFFF; + ReadData2E = 64'h41270C52F5B2AE7D; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2667664\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'hC7E0000000007FFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2668665\n"); + end + ReadData1E = 64'hC01B2B55238E3B77; + ReadData2E = 64'hC3D03FFFFFFFFBFF; + ReadData3E = 64'hC00EE4E121397860; + ans = 64'h43FB9802781C6D98; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2669666\n"); + end + ReadData1E = 64'h3FD0088000000000; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h3F51000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2670667\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hC01FFFE00000003E; + ReadData3E = 64'h3CDEDFFFFFFFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2671668\n"); + end + ReadData1E = 64'h3FDFFBFFFFFFFFEE; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hAE4FFFFFFFFFFFEF; + ans = 64'h3FFFFBFFFFFFFFEC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2672669\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h3ED00023FFFFFFFF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2673670\n"); + end + ReadData1E = 64'hDC50000007000000; + ReadData2E = 64'h3FFFFFFE00000FFF; + ReadData3E = 64'hC1F00007FFFFFDFF; + ans = 64'hDC5FFFFE0E000F1F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2674671\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2675672\n"); + end + ReadData1E = 64'hC98C0FFFFFFFFFFE; + ReadData2E = 64'hC1700FFFFFC00000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4B0C2C0FFF8FBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2676673\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'hC2CFFFE03FFFFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2677674\n"); + end + ReadData1E = 64'hB3FFFFFFEFFFFFFB; + ReadData2E = 64'hBFDFFFFFFDFFFFC0; + ReadData3E = 64'hAFB0001FFF7FFFFF; + ans = 64'h33EFFFFFEDFFFFBC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2678675\n"); + end + ReadData1E = 64'h3FD57865DBB98490; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h0010000000000000; + ans = 64'h7FC57865DBB98490; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2679676\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h3BAFFFFFFFFFB7FF; + ReadData3E = 64'h3E697A79F7FAC842; + ans = 64'h7BAFFFFFFFFFB7FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2680677\n"); + end + ReadData1E = 64'h43D000020007FFFF; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hBFDFFC07FFFFFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2681678\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hC7E00800FFFFFFFF; + ReadData3E = 64'hC010000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2682679\n"); + end + ReadData1E = 64'h3EC0000080000000; + ReadData2E = 64'h47EA18EA85087290; + ReadData3E = 64'h3F9F000000000040; + ans = 64'h46BA18EB55CFC6B8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2683680\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2684681\n"); + end + ReadData1E = 64'hBF9FFFFFFBDFFFFE; + ReadData2E = 64'h348197C835C4D4B0; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2685682\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h7FD1000010000000; + ans = 64'h7FD1000010000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2686683\n"); + end + ReadData1E = 64'h385004000000003F; + ReadData2E = 64'hBFDFFFF7FFFFFEFF; + ReadData3E = 64'h3FB000400000FFFF; + ans = 64'h3FB000400000FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2687684\n"); + end + ReadData1E = 64'h380FFF0000003FFF; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2688685\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h3FFC0D52D754F05B; + ReadData3E = 64'hC1DFFF7FFFFBFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2689686\n"); + end + ReadData1E = 64'h4120000008040000; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h37EABC9DC7BB55C5; + ans = 64'h37EABC9DC7BB55C5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2690687\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hC3F50270323FDBCA; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2691688\n"); + end + ReadData1E = 64'h3FCF8003FFFFFFFF; + ReadData2E = 64'hBC948D777657E9E2; + ReadData3E = 64'h3FE000000101FFFF; + ans = 64'h3FE000000101FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2692689\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hFCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2693690\n"); + end + ReadData1E = 64'h3FB0001FFFBFFFFF; + ReadData2E = 64'hB885176B31E03F6C; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2694691\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h401FFF000007FFFF; + ans = 64'hFFCFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2695692\n"); + end + ReadData1E = 64'hC3E0008000200000; + ReadData2E = 64'h3DDFFFFFEBFFFFFF; + ReadData3E = 64'h7FF0000001001000; + ans = 64'h7FF8000001001000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2696693\n"); + end + ReadData1E = 64'h3FD00000000007FF; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'hC001000000000080; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2697694\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hBB80400000000000; + ReadData3E = 64'h3D3000003FFF0000; + ans = 64'hFB803FFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2698695\n"); + end + ReadData1E = 64'hBA4C7F87C71A499E; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'hBFDFFFFF7BFFFFFF; + ans = 64'hBFDFFFFF7BFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2699696\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hC06F000000000006; + ReadData3E = 64'h8010000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2700697\n"); + end + ReadData1E = 64'h40200000000003C0; + ReadData2E = 64'h0020006FFFFFFFFF; + ReadData3E = 64'hFFEFFFFFFFFFBFDE; + ans = 64'hFFEFFFFFFFFFBFDE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2701698\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2702699\n"); + end + ReadData1E = 64'h401F80FFFFFFFFFF; + ReadData2E = 64'h400FFFFFC0000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4043C07FE07F0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2703700\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h47EDD848C981EA6A; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2704701\n"); + end + ReadData1E = 64'hC1F23209BD9FFBD8; + ReadData2E = 64'h3FD1F427E47CF5E2; + ReadData3E = 64'hB8AE8EA74E4B5BF3; + ans = 64'hC1D46AD2CBD4A7C5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2705702\n"); + end + ReadData1E = 64'hCFBFFF8000000400; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h4FDFFF80000003FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2706703\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hD6F0007FBFFFFFFF; + ReadData3E = 64'h380FF8000000001F; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2707704\n"); + end + ReadData1E = 64'h4290000004008000; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h34F0000020400000; + ans = 64'hC2B0000004008000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2708705\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hC167C6CA402625FE; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2709706\n"); + end + ReadData1E = 64'h400A3ADEAAADDC67; + ReadData2E = 64'hB7FFFFFFFFFF7FFF; + ReadData3E = 64'h7FE0008000000001; + ans = 64'h7FE0008000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2710707\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2711708\n"); + end + ReadData1E = 64'hBABCA112A976E57A; + ReadData2E = 64'h4018121A2FF65F02; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2712709\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'hC1A3CDB48240DA83; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2713710\n"); + end + ReadData1E = 64'h4030020000002000; + ReadData2E = 64'hC76F7FFFFFFFC000; + ReadData3E = 64'h7FE00FFFF7FFFFFE; + ans = 64'h7FE00FFFF7FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2714711\n"); + end + ReadData1E = 64'h801FF800000003FF; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h8000000000000000; + ans = 64'h400FF80000000401; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2715712\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h37E03FFFFFFEFFFF; + ReadData3E = 64'h3FEFFFFFFBF7FFFF; + ans = 64'h77E03FFFFFFEFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2716713\n"); + end + ReadData1E = 64'hC04000007FFFFEFE; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hC02E3C52D76D051E; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2717714\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'h403FFFFF3FFFFFFF; + ReadData3E = 64'h4000000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2718715\n"); + end + ReadData1E = 64'hC0300FFFFFFFFFBE; + ReadData2E = 64'h43004000003FFFFF; + ReadData3E = 64'h41DFFFFFFFE001FF; + ans = 64'hC340503FC0403FBC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2719716\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFF; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2720717\n"); + end + ReadData1E = 64'h405000040FFFFFFF; + ReadData2E = 64'hC010001FFFFFFEFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hC070002410081EFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2721718\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h3F1000010003FFFF; + ans = 64'h4010001000010002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2722719\n"); + end + ReadData1E = 64'h47DFFFFFFFFFFFFF; + ReadData2E = 64'h43CFFFF7FFFF0000; + ReadData3E = 64'hC800040002000000; + ans = 64'h4BBFFFF7FFFEFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2723720\n"); + end + ReadData1E = 64'hC01A02F41B53F630; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2724721\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hC01580F1A3E9C31D; + ReadData3E = 64'h3D258F8BA280BED4; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2725722\n"); + end + ReadData1E = 64'hF2ADC0FBB203983A; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h29000020000000FF; + ans = 64'hB2DDC0FBB2039838; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2726723\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hFFD800001FFFFFFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2727724\n"); + end + ReadData1E = 64'hF790000080000000; + ReadData2E = 64'hBFF0000000000207; + ReadData3E = 64'hC03FF8FFFFFFFFFF; + ans = 64'h7790000080000207; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2728725\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h7CAFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2729726\n"); + end + ReadData1E = 64'hD1F001FFFFFFFFFF; + ReadData2E = 64'h41DFFFFFFF80001F; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2730727\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h34C8B8C8400D79FB; + ans = 64'h7FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2731728\n"); + end + ReadData1E = 64'hC02000003FC00000; + ReadData2E = 64'hADF215D4BD48D743; + ReadData3E = 64'hC037492365754354; + ans = 64'hC037492365754354; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2732729\n"); + end + ReadData1E = 64'h000850AEC26527A5; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2733730\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'h000FE7FFFFFFFFFF; + ReadData3E = 64'h7FDFFDFFFFF7FFFE; + ans = 64'h7FDFFDFFFFF7FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2734731\n"); + end + ReadData1E = 64'h3E718B9C0643AF79; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h380FFFFE0007FFFF; + ans = 64'h3E718B9C0643AF78; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2735732\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hC27A98A4D75FAD64; + ReadData3E = 64'h0000000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2736733\n"); + end + ReadData1E = 64'hC03C515D9FB1830C; + ReadData2E = 64'hB800000007FFFDFF; + ReadData3E = 64'h41E000001F000000; + ans = 64'h41E000001F000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2737734\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2738735\n"); + end + ReadData1E = 64'hC01FFFFFFE03FFFF; + ReadData2E = 64'h7FD00000000C0000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2739736\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'hC7FFFFFFFFFFC3FE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2740737\n"); + end + ReadData1E = 64'h06903DA143B22D24; + ReadData2E = 64'h414FFFFFFFC00080; + ReadData3E = 64'hC02000000000000C; + ans = 64'hC02000000000000C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2741738\n"); + end + ReadData1E = 64'hC078007FFFFFFFFF; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hC098007FFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2742739\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'h7FFFEFFFFFFFBFFE; + ReadData3E = 64'h71C020003FFFFFFF; + ans = 64'h7FFFEFFFFFFFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2743740\n"); + end + ReadData1E = 64'h001FFF8000003FFE; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h43D000FFDFFFFFFF; + ans = 64'h43D000FFDFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2744741\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hC3F01FFFFFF00000; + ReadData3E = 64'h4340000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2745742\n"); + end + ReadData1E = 64'hB25FFFFFFFFBF7FF; + ReadData2E = 64'hCABFFC0007FFFFFE; + ReadData3E = 64'hBE90FFFFFFFFFBFF; + ans = 64'hBE90FFFFC007FBEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2746743\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2747744\n"); + end + ReadData1E = 64'h3C6FFFFFFBFF0000; + ReadData2E = 64'h7FFFFFFFFFFE001E; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFE001E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2748745\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h3CC003FFFFFFFFEF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2749746\n"); + end + ReadData1E = 64'h00000000100FFFFE; + ReadData2E = 64'h000FFC000000000E; + ReadData3E = 64'hC3EFFFE000FFFFFF; + ans = 64'hC3EFFFE000FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2750747\n"); + end + ReadData1E = 64'h400FC80000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2751748\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hBEEFFFFFFEFFFFFE; + ReadData3E = 64'h40500007FFFF0000; + ans = 64'hFEEFFFFFFEFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2752749\n"); + end + ReadData1E = 64'hD7AFF00000004000; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h37FFFFFFFFFFFBFF; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2753750\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'h3100000000000801; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h7100000000000800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2754751\n"); + end + ReadData1E = 64'h33B80000000007FE; + ReadData2E = 64'h407FF85AA2D04AEF; + ReadData3E = 64'h407000000000000D; + ans = 64'h407000000000000D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2755752\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2756753\n"); + end + ReadData1E = 64'h3FEFEEB6193C14EA; + ReadData2E = 64'hBDB00000007FFDFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hBDAFEEB61A3B8699; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2757754\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'hC0D00000000BFFFF; + ans = 64'hC0D00100000BFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2758755\n"); + end + ReadData1E = 64'hC0A000021FFFFFFE; + ReadData2E = 64'h4062AB94428F7A2A; + ReadData3E = 64'h43DFBFFFFFFFFFFF; + ans = 64'h43DFBFFFFFFFFED4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2759756\n"); + end + ReadData1E = 64'h800FC01000000000; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2760757\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hC0550D69CCECECD4; + ReadData3E = 64'h403FFFFFF83FFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2761758\n"); + end + ReadData1E = 64'hBFCAD617AF420EF5; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'hBFB0000000000000; + ans = 64'hBFAFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2762759\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hBE30000000002000; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hFE30000000001FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2763760\n"); + end + ReadData1E = 64'h43CF80000003FFFF; + ReadData2E = 64'h3FE18E6E0B54967C; + ReadData3E = 64'h47EFFF9FFFFFFFFF; + ans = 64'h47EFFF9FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2764761\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hFFCFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2765762\n"); + end + ReadData1E = 64'h402FFFFF800000FF; + ReadData2E = 64'hB7FFEFFFFFFEFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2766763\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hCA80000000000103; + ans = 64'hFFDFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2767764\n"); + end + ReadData1E = 64'hC803FFFFFFFC0000; + ReadData2E = 64'h3FBFFFFFFEF7FFFF; + ReadData3E = 64'h380FC20000000000; + ans = 64'hC7D3FFFFFF56FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2768765\n"); + end + ReadData1E = 64'h37EC3274D5D0631C; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2769766\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'h800BFFFFFFFFF7FE; + ReadData3E = 64'hCC1D1EF7E6CECC11; + ans = 64'hCC1D1EF7E6CECC11; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2770767\n"); + end + ReadData1E = 64'hBFB81D2067A1E1EB; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hDB364C7EB6050A61; + ans = 64'hDB364C7EB6050A61; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2771768\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hC02000040007FFFE; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2772769\n"); + end + ReadData1E = 64'h4019749156E4282C; + ReadData2E = 64'hBEB002317B85EEC2; + ReadData3E = 64'hC341FF7FFFFFFFFF; + ans = 64'hC341FF7FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2773770\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2774771\n"); + end + ReadData1E = 64'h358B2C41AEBAD938; + ReadData2E = 64'h3800000800000800; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2775772\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'hB81080FFFFFFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2776773\n"); + end + ReadData1E = 64'hBFF5DF630E26F3D8; + ReadData2E = 64'h41EC70D92913E637; + ReadData3E = 64'h47F0004020000000; + ans = 64'h47F0004020000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2777774\n"); + end + ReadData1E = 64'hBDC1FFFFFFDFFFFF; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'h3DE1FFFFFFE00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2778775\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hC0020EC4BD7F8123; + ReadData3E = 64'h403894684B0415AF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2779776\n"); + end + ReadData1E = 64'hBD60000000010000; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'h381FFFFFFDFFFDFF; + ans = 64'h3D9000000000FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2780777\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'h3FFFFFFFFFFFFEFF; + ReadData3E = 64'hC010000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2781778\n"); + end + ReadData1E = 64'h46000000FFFFFFFF; + ReadData2E = 64'hC5EDFFFFFFF7FFFE; + ReadData3E = 64'h3FDFFFFEFBFFFFFF; + ans = 64'hCBFE0001DFF7FFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2782779\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2783780\n"); + end + ReadData1E = 64'h43DFC40000000000; + ReadData2E = 64'hC04B174524E4DFD1; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC43AE479833FB2AD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2784781\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h43C0000000000BFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2785782\n"); + end + ReadData1E = 64'h403F0000000007FE; + ReadData2E = 64'h3FA62461C1C9F307; + ReadData3E = 64'h3FEFFFFFFFB7FFFF; + ans = 64'h4002B99F59CBD47B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2786783\n"); + end + ReadData1E = 64'h3E802000000FFFFF; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h7FE0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2787784\n"); + end + ReadData1E = 64'h7FEFFFFFFFFFFFFE; + ReadData2E = 64'hC1F000000003FF7F; + ReadData3E = 64'h40017FFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2788785\n"); + end + ReadData1E = 64'hFFFFFFC00000007F; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'h41DFE00000000080; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2789786\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h43C400000001FFFE; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2790787\n"); + end + ReadData1E = 64'hC03D5A7BF8C7D7C4; + ReadData2E = 64'hC0B0FFFFDFFFFFFF; + ReadData3E = 64'hBB4FFFFDF8000000; + ans = 64'h40FF30237D9F5D4D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2791788\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2792789\n"); + end + ReadData1E = 64'hC3DB29C43E251F09; + ReadData2E = 64'hBFDC702590D9C7B5; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2793790\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'hBF97FDDA7C3989F3; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2794791\n"); + end + ReadData1E = 64'hAF1029C5DA72892E; + ReadData2E = 64'h0000200000000FFF; + ReadData3E = 64'h38307FFFFFBFFFFF; + ans = 64'h38307FFFFFBFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2795792\n"); + end + ReadData1E = 64'hFFE0011FFFFFFFFF; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'hC018011FFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2796793\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h4070BFFFFFFFFFFE; + ReadData3E = 64'hC05000000003FBFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2797794\n"); + end + ReadData1E = 64'hC02FFFFFE0000000; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h4B000FFFF7FFFFFE; + ans = 64'h4B000FFFF7FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2798795\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'hBFF5B0FC37782F4F; + ReadData3E = 64'h8010000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2799796\n"); + end + ReadData1E = 64'hB7EFFFF000020000; + ReadData2E = 64'hBFCFFFEFFFBFFFFF; + ReadData3E = 64'hBF916F67F0EF1833; + ans = 64'hBF916F67F0EF1833; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2800797\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2801798\n"); + end + ReadData1E = 64'hBAC0000000403FFE; + ReadData2E = 64'hC1C000000FEFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2802799\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h4954818D8D3D17EE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2803800\n"); + end + ReadData1E = 64'hC1EFFEFFFFFFFFFA; + ReadData2E = 64'h4E20000000020080; + ReadData3E = 64'h41FFFFFFFFFF001F; + ans = 64'hD01FFF00000400DA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2804801\n"); + end + ReadData1E = 64'hB7E15050F296A659; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2805802\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h4010FCD87C3C121A; + ReadData3E = 64'hC0177483CFF53DCB; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2806803\n"); + end + ReadData1E = 64'h19EFDFFFFFEFFFFF; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'hBFCFFFFFDFFFBFFE; + ans = 64'hBFCFFFFFDFFFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2807804\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h3DDFEDFFFFFFFFFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2808805\n"); + end + ReadData1E = 64'h4017FFFFFFFFDFFF; + ReadData2E = 64'hBFCFFFFFFFFFF03F; + ReadData3E = 64'h3FF0650CA3EAAE07; + ans = 64'hBFDE6BCD7054989D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2809806\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2810807\n"); + end + ReadData1E = 64'h27500000008007FF; + ReadData2E = 64'h401FFFFFFFBBFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2811808\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hBF9FFFFFFFFEDFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2812809\n"); + end + ReadData1E = 64'hBCCFFFC7FFFFFFFF; + ReadData2E = 64'hBF7FFFFFBFFFFBFF; + ReadData3E = 64'h7FDA00334EE10918; + ans = 64'h7FDA00334EE10918; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2813810\n"); + end + ReadData1E = 64'hC03FFFFC00003FFF; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'hC06FFFFC00003FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2814811\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'hBF1FFFF800000004; + ReadData3E = 64'h801000000007FFFB; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2815812\n"); + end + ReadData1E = 64'hB7F82E7D3BEC4999; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'hC0374E72DF9597F8; + ans = 64'hC0374E72DF9597F8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2816813\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'hC1D0000003FBFFFF; + ReadData3E = 64'h4000000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2817814\n"); + end + ReadData1E = 64'hC0F3FFF7FFFFFFFF; + ReadData2E = 64'h3FE0007FFF7FFFFE; + ReadData3E = 64'h4340007FFFFFFFF7; + ans = 64'h4340007FFFFFAFF5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2818815\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2819816\n"); + end + ReadData1E = 64'h47EBE6F78617EEF9; + ReadData2E = 64'hC05FFFFEFFDFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hC85BE6F6A6C44BD0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2820817\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hC7FFFFDFE0000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2821818\n"); + end + ReadData1E = 64'h8016A2F9F6030168; + ReadData2E = 64'h37FF800000100000; + ReadData3E = 64'hBFEFF000000000FF; + ans = 64'hBFEFF000000000FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2822819\n"); + end + ReadData1E = 64'h3FEFFFFFFFFF0000; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2823820\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h3FF0000000004FFF; + ReadData3E = 64'h41F244843187E7B3; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2824821\n"); + end + ReadData1E = 64'hC80FFFF800000006; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'hC040001000000000; + ans = 64'hC040001000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2825822\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'hBFEFDEFFFFFFFFFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2826823\n"); + end + ReadData1E = 64'h468FFFFFFFFFEFEF; + ReadData2E = 64'h7AAFFFF9FFFFFFFE; + ReadData3E = 64'h3CCFFFFFFE0000FF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2827824\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2828825\n"); + end + ReadData1E = 64'h372003FFFFFFFFFF; + ReadData2E = 64'hC340040001000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2829826\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'hC1FFFFFFF7EFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2830827\n"); + end + ReadData1E = 64'hC34FFBFFFFFFBFFE; + ReadData2E = 64'hB81FFFFF80040000; + ReadData3E = 64'h3A8FFE0004000000; + ans = 64'h3B7FFC3F7C13C77E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2831828\n"); + end + ReadData1E = 64'h390163DE9D7FDD26; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2832829\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h4341FFFFFFC00000; + ReadData3E = 64'h47FFFFFFFFFFB7FF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2833830\n"); + end + ReadData1E = 64'hFFD000007FFFFFE0; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h43E000000000F7FF; + ans = 64'h7C9000007FFFFFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2834831\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h43EFFFFF7F7FFFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2835832\n"); + end + ReadData1E = 64'h264200000007FFFF; + ReadData2E = 64'h0B30000000101000; + ReadData3E = 64'hC7F0807FFFFFFFFF; + ans = 64'hC7F0807FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2836833\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2837834\n"); + end + ReadData1E = 64'h400008000007FFFE; + ReadData2E = 64'h3F55F75EC6FDFEAF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFA7F696264E0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2838835\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h38100007FFC00000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2839836\n"); + end + ReadData1E = 64'h2AE0000000007FE0; + ReadData2E = 64'h3F5FFFFEFFFFFFEE; + ReadData3E = 64'hC3C0041000000000; + ans = 64'hC3C0041000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2840837\n"); + end + ReadData1E = 64'h4180000001FEFFFE; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hC180000001FEFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2841838\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h3FDFDFFFFFFFFBFE; + ReadData3E = 64'h22B01FFFFFFE0000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2842839\n"); + end + ReadData1E = 64'h519FDFFFFBFFFFFE; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'hBFE00000003FFFFA; + ans = 64'hD1AFDFFFFBFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2843840\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h3FF0007FF8000000; + ReadData3E = 64'h4340000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2844841\n"); + end + ReadData1E = 64'h5670007FBFFFFFFF; + ReadData2E = 64'hC00FFFFFF7FDFFFF; + ReadData3E = 64'hFFEFFFFFFFEF8000; + ans = 64'hFFEFFFFFFFEF8000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2845842\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2846843\n"); + end + ReadData1E = 64'h401FF7FFEFFFFFFE; + ReadData2E = 64'h001004000000FFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2847844\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h401C000000000020; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2848845\n"); + end + ReadData1E = 64'hC060080007FFFFFF; + ReadData2E = 64'hBFB000000FEFFFFE; + ReadData3E = 64'h3FD5C8D79E11B91D; + ans = 64'h4020B646D4E885CE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2849846\n"); + end + ReadData1E = 64'h3F6C000001FFFFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2850847\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'h3FCFF3FFFFFFFFFE; + ReadData3E = 64'hC1C61FFDEE9D8BB1; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2851848\n"); + end + ReadData1E = 64'h4002A2A080CEE6CC; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h3803FFFFFFFFEFFE; + ans = 64'hC362A2A080CEE6CB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2852849\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'hBCA0100000000FFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2853850\n"); + end + ReadData1E = 64'hC1803FFFFFF7FFFF; + ReadData2E = 64'hB97FFFFE000001FF; + ReadData3E = 64'hC1D000003FFFFBFE; + ans = 64'hC1D000003FFFFBFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2854851\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2855852\n"); + end + ReadData1E = 64'h802000000002FFFF; + ReadData2E = 64'h381FFDFFFFFFFC00; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h800FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2856853\n"); + end + ReadData1E = 64'h7FF0000000000000; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hBFD07BFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2857854\n"); + end + ReadData1E = 64'h3FC0000001FFFFE0; + ReadData2E = 64'h2060000000003FF8; + ReadData3E = 64'h43E00000000FFE00; + ans = 64'h43E00000000FFE00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2858855\n"); + end + ReadData1E = 64'hBFB0800000080000; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2859856\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h3FD000003FFFFFFA; + ReadData3E = 64'h002497C63E0B5F73; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2860857\n"); + end + ReadData1E = 64'hB2DFFBFFFC000000; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h3FB0000008007FFF; + ans = 64'h3FB0000008007FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2861858\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h4F1000000080000F; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2862859\n"); + end + ReadData1E = 64'h39AFFFFFFFFE03FF; + ReadData2E = 64'h4137FFFFFFFFF800; + ReadData3E = 64'hC00000003FFEFFFF; + ans = 64'hC00000003FFEFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2863860\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2864861\n"); + end + ReadData1E = 64'h066000007FFDFFFF; + ReadData2E = 64'hED0FFFFFC000007F; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2865862\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'hFFDFC1FFFFFFFFFF; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2866863\n"); + end + ReadData1E = 64'h480FFFFE03FFFFFF; + ReadData2E = 64'h44DD7F54BC4ADB02; + ReadData3E = 64'hC000000103FFFFFE; + ans = 64'h4CFD7F52E80579D4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2867864\n"); + end + ReadData1E = 64'hC7E711D738373AC1; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hC4A711D738373AC0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2868865\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'hC2BFFFBFFFFFFFE0; + ReadData3E = 64'h37E0F5D72A010ECA; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2869866\n"); + end + ReadData1E = 64'h3E00000800000002; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'hC06FFF8000400000; + ans = 64'hC06FFF80003FF000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2870867\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h40EFFEFDFFFFFFFF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2871868\n"); + end + ReadData1E = 64'h3CA0000000000FBF; + ReadData2E = 64'h41DFFF6FFFFFFFFF; + ReadData3E = 64'hFFEFFFFFEFFFFF7E; + ans = 64'hFFEFFFFFEFFFFF7E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2872869\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2873870\n"); + end + ReadData1E = 64'h42B04003FFFFFFFE; + ReadData2E = 64'hC05FFFFFFC008000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hC3204003FDF8407A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2874871\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFC0000F; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2875872\n"); + end + ReadData1E = 64'hC03FFFFFF8000000; + ReadData2E = 64'hD0A68B21AC154C74; + ReadData3E = 64'hDC0BFFFFFFFFF800; + ans = 64'hDC0BFFFFFFFFF800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2876873\n"); + end + ReadData1E = 64'hBE2FFFF7FEFFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'hBE3FFFF7FEFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2877874\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h3FF0000000880000; + ReadData3E = 64'hC010000400000080; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2878875\n"); + end + ReadData1E = 64'hC80FFFE001000000; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h001FFFE000020000; + ans = 64'hC81FFFE001000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2879876\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h296FFFFBFFFFFC00; + ReadData3E = 64'hC010000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2880877\n"); + end + ReadData1E = 64'hC050008000003FFE; + ReadData2E = 64'h35FFFFFFFF0007FF; + ReadData3E = 64'hC013FFFFFFFF7FFF; + ans = 64'hC013FFFFFFFF7FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2881878\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2882879\n"); + end + ReadData1E = 64'h3FE00FFFFC000000; + ReadData2E = 64'hBDD3FEFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBDC41306FB003FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2883880\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hC4B000001EFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2884881\n"); + end + ReadData1E = 64'hC1CFFFFE007FFFFF; + ReadData2E = 64'h473698EB2856CB2E; + ReadData3E = 64'h41F56E2129B81E51; + ans = 64'hC91698E9BF227C54; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2885882\n"); + end + ReadData1E = 64'hC03FDFFFBFFFFFFF; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2886883\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h000FB8DEFD5217BC; + ReadData3E = 64'hC1780000000001FF; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2887884\n"); + end + ReadData1E = 64'h38100FFFFFF00000; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'hC1C00000FFEFFFFE; + ans = 64'hC1C00000FFEFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2888885\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h3E70000080000800; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2889886\n"); + end + ReadData1E = 64'h3EF0002FFFFFFFFF; + ReadData2E = 64'h35E4019673D52C33; + ReadData3E = 64'h402FFFFFBEFFFFFF; + ans = 64'h402FFFFFBEFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2890887\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2891888\n"); + end + ReadData1E = 64'h80255B56C7EEB6FE; + ReadData2E = 64'h41E86BE582B7BA44; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2892889\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000007FC0; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2893890\n"); + end + ReadData1E = 64'hB7E744F8247E2AEA; + ReadData2E = 64'h3E26D8A82264B5D1; + ReadData3E = 64'hE2C0000400000002; + ans = 64'hE2C0000400000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2894891\n"); + end + ReadData1E = 64'h402FC00100000000; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2895892\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'hAC4FFC00007FFFFE; + ReadData3E = 64'hC02BFFFFEFFFFFFF; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2896893\n"); + end + ReadData1E = 64'hBFC00000207FFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h3270001000001FFF; + ans = 64'h3270001000001FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2897894\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'hC2EFFFFDFFFEFFFF; + ReadData3E = 64'h8010000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2898895\n"); + end + ReadData1E = 64'hC00EFFFFFFEFFFFE; + ReadData2E = 64'hC1C70C5E12977664; + ReadData3E = 64'hC3EFFFFFFFFFBFFF; + ans = 64'hC3EFFFFFFFE96C04; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2899896\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2900897\n"); + end + ReadData1E = 64'h40210000003FFFFF; + ReadData2E = 64'h41E3DC0C2EFC1AE3; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h421519CCF25B4CC1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2901898\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'hC7FF80000000FFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2902899\n"); + end + ReadData1E = 64'hA3300000003FF7FF; + ReadData2E = 64'h43FC00000000001E; + ReadData3E = 64'hC00FFE00000007FF; + ans = 64'hC00FFE00000007FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2903900\n"); + end + ReadData1E = 64'h870758E93961D160; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2904901\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h4F2FFFFFFF0007FF; + ReadData3E = 64'hBF9000401FFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2905902\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h40FFDFFDFFFFFFFF; + ans = 64'h40FFE005FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2906903\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'hC160000FFFF7FFFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2907904\n"); + end + ReadData1E = 64'h43B3FAD71A6A5A79; + ReadData2E = 64'h3FF7DDB032330399; + ReadData3E = 64'hA542000000000007; + ans = 64'h43BDCD69F70375E0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2908905\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2909906\n"); + end + ReadData1E = 64'hC31000001FFFFDFE; + ReadData2E = 64'h4027FFFFFFF00000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hC34800002FEFFCFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2910907\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hC1E0000200200000; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2911908\n"); + end + ReadData1E = 64'h47FC5081EA629D6A; + ReadData2E = 64'h47F202110E043FAD; + ReadData3E = 64'h47E4E0B9421797CF; + ans = 64'h4FFFDE3A66443CF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2912909\n"); + end + ReadData1E = 64'h3FF0800000003FFE; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'hC000800000003FFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2913910\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'hBFDFF7FFFFF00000; + ReadData3E = 64'hC3E01000007FFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2914911\n"); + end + ReadData1E = 64'hD610000002000010; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'hC0E26EF153FD3C01; + ans = 64'h563000000200000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2915912\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h801000008000007F; + ReadData3E = 64'h4000000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2916913\n"); + end + ReadData1E = 64'h400FEFFFFFFFF7FF; + ReadData2E = 64'h38100002000FFFFF; + ReadData3E = 64'hC0332C96203E54A1; + ans = 64'hC0332C96203E54A1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2917914\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2918915\n"); + end + ReadData1E = 64'hC03906DC2D055D73; + ReadData2E = 64'h41E00000FFFBFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hC22906DDBD6CDE89; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2919916\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'hFFF0044000000000; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2920917\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFB80; + ReadData2E = 64'hC3C612BC6D92524C; + ReadData3E = 64'hDD435E1CF31B00AA; + ans = 64'hDD435E1CF31B00AA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2921918\n"); + end + ReadData1E = 64'hBEA5F2F8D82481B9; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'hC33FFFFD41A0E4FB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2922919\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h3C003FFFFFBFFFFE; + ReadData3E = 64'h3A1001007FFFFFFF; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2923920\n"); + end + ReadData1E = 64'hC03FFEFFFFFFFFFC; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h3FF00004000001FF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2924921\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'h3CFFF00000000400; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2925922\n"); + end + ReadData1E = 64'h7FFEFFFFFFFFFFF0; + ReadData2E = 64'h381003FFFFBFFFFF; + ReadData3E = 64'hDC5F000007FFFFFE; + ans = 64'h7FFEFFFFFFFFFFF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2926923\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2927924\n"); + end + ReadData1E = 64'h37F043C645442FB4; + ReadData2E = 64'h377FF7FFFFFFDFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2928925\n"); + end + ReadData1E = 64'h7FF0000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h0CA00400000007FE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2929926\n"); + end + ReadData1E = 64'h41E000000000FDFE; + ReadData2E = 64'h400008000007FFFF; + ReadData3E = 64'hBFCFFFF7FFFFE000; + ans = 64'h41F008000004FE7D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2930927\n"); + end + ReadData1E = 64'hAA2E71A5CD29C71E; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2931928\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h401F9C4896166F5A; + ReadData3E = 64'hC9200007FFFFF800; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2932929\n"); + end + ReadData1E = 64'h401000000002001F; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h41FFFFFFFFFFFBF6; + ans = 64'h41FFFFFFFFFFFBF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2933930\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h001100000003FFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2934931\n"); + end + ReadData1E = 64'hC3C000000000002F; + ReadData2E = 64'h3FE00000010007FF; + ReadData3E = 64'hB810000000400007; + ans = 64'hC3B000000100082E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2935932\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2936933\n"); + end + ReadData1E = 64'hFFD00000003FFFFE; + ReadData2E = 64'hC00FFFE03FFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h7FEFFFE0407FFF7B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2937934\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h47F0003FFFFFFFF6; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2938935\n"); + end + ReadData1E = 64'hB7E00040FFFFFFFF; + ReadData2E = 64'hC01FFFFFFFEFFC00; + ReadData3E = 64'hC48000000207FFFF; + ans = 64'hC48000000207FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2939936\n"); + end + ReadData1E = 64'h37F0000000404000; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2940937\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h3FDFF80080000000; + ReadData3E = 64'h3C008000003FFFFF; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2941938\n"); + end + ReadData1E = 64'hBF3000000001FDFF; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h4018000003FFFFFE; + ans = 64'h4017FFE003FFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2942939\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h59A4677A5981327F; + ReadData3E = 64'h4340000000000001; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2943940\n"); + end + ReadData1E = 64'h4023A37CFD73D80E; + ReadData2E = 64'h3EECC87A73880ADE; + ReadData3E = 64'hBFD0FFFFFFFFFFFB; + ans = 64'hBFD0FDCABD35DADB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2944941\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2945942\n"); + end + ReadData1E = 64'h87BFFFFF87FFFFFE; + ReadData2E = 64'hC7F000200000FFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2946943\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h3F3F9970E1443614; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2947944\n"); + end + ReadData1E = 64'h4034000000001FFF; + ReadData2E = 64'h3FDFEC31192D9B88; + ReadData3E = 64'h3FDFDFFFFFBFFFFF; + ans = 64'h4024F29EAFBAA120; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2948945\n"); + end + ReadData1E = 64'h1ADFFFFFFF7FFFFB; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2949946\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'hBC9000047FFFFFFF; + ReadData3E = 64'hC7FFF7FFF7FFFFFF; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2950947\n"); + end + ReadData1E = 64'hBF1000001FFF8000; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h43FFFDFFFFFFFFF0; + ans = 64'h43FFFDFFFFFFFFF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2951948\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h42AFFFDFFFFFFF00; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2952949\n"); + end + ReadData1E = 64'h4033B75F80ECFE6E; + ReadData2E = 64'h826000FFFFFFFFFF; + ReadData3E = 64'h409FFFFFFFFFFFBF; + ans = 64'h409FFFFFFFFFFFBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2953950\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2954951\n"); + end + ReadData1E = 64'hC01FFBFFFFFFFFFD; + ReadData2E = 64'hB7EE7A40521D8DC7; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h381E76710A134A12; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2955952\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h3FDA2BF863768DF3; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2956953\n"); + end + ReadData1E = 64'h402FFFFFFFBFFF7F; + ReadData2E = 64'h41D0000003FDFFFF; + ReadData3E = 64'hCFC0400000100000; + ans = 64'hCFC0400000100000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2957954\n"); + end + ReadData1E = 64'h402FF800FFFFFFFF; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h4010000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2958955\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'hC1EFFF00007FFFFF; + ReadData3E = 64'h41C000000003DFFF; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2959956\n"); + end + ReadData1E = 64'hBF9FFFFFFD800000; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hFFEFFFFFFFBFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2960957\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h37FA732824ED5956; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2961958\n"); + end + ReadData1E = 64'h7FDAA6A4E94FE1DE; + ReadData2E = 64'h40700000FFFFFFDF; + ReadData3E = 64'hC1E000020000FFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2962959\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2963960\n"); + end + ReadData1E = 64'hE8D01E2C59865900; + ReadData2E = 64'h7FE05FFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2964961\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h42FCDAEE8175D17B; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2965962\n"); + end + ReadData1E = 64'hC005D40A05C6E463; + ReadData2E = 64'hC0200007BFFFFFFF; + ReadData3E = 64'hBFB0000007FFFFFF; + ans = 64'h4035C4149873BF2E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2966963\n"); + end + ReadData1E = 64'hC0400000407FFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2967964\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h3C4F800000002000; + ReadData3E = 64'hFB802FFFFFFFFFFF; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2968965\n"); + end + ReadData1E = 64'h402001BFFFFFFFFF; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h487FFFF7FFFF7FFF; + ans = 64'h487FFFF7FFFF7FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2969966\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'hC0913AD4B2635ED8; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2970967\n"); + end + ReadData1E = 64'hBFC0200000003FFF; + ReadData2E = 64'hBFB07FFFFFFFFDFF; + ReadData3E = 64'h3FBEFFFFF0000000; + ans = 64'h3FC08A0FF8000400; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2971968\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2972969\n"); + end + ReadData1E = 64'h3E73FFFFFFFFFE00; + ReadData2E = 64'h3FB0010080000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4000000000A00A04; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2973970\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h80007FFFFFFC0000; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2974971\n"); + end + ReadData1E = 64'h480EFFFFBFFFFFFE; + ReadData2E = 64'hBFCF3B91C4ED419A; + ReadData3E = 64'hBF8F1DDB623B7A15; + ans = 64'hC7EE41B4F84EB401; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2975972\n"); + end + ReadData1E = 64'hFFE01FFFFFFFFF7E; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h0010000000000000; + ans = 64'h7FD01FFFFFFFFF7D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2976973\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'hC800000000200000; + ReadData3E = 64'h401000000007FFFC; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2977974\n"); + end + ReadData1E = 64'hB7FFFFFFFFFFFDEF; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h41F021564993B1FC; + ans = 64'h41F021564993B1FC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2978975\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h480DFFFFFFFFFFFC; + ReadData3E = 64'hC010000000000001; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2979976\n"); + end + ReadData1E = 64'hC16008007FFFFFFE; + ReadData2E = 64'hC1F8331395E217E3; + ReadData3E = 64'h755000000083FFFE; + ans = 64'h755000000083FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2980977\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2981978\n"); + end + ReadData1E = 64'h3FBFFF8000040000; + ReadData2E = 64'hBFEFF7FFFDFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBFBFF7801E04070F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2982979\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'hBC5FFBFF7FFFFFFF; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2983980\n"); + end + ReadData1E = 64'hC02179D4ECC62444; + ReadData2E = 64'hC3FFFFFFE00FFFFE; + ReadData3E = 64'hFFDDBCB8A45E09B9; + ans = 64'hFFDDBCB8A45E09B9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2984981\n"); + end + ReadData1E = 64'hC3E001BFFFFFFFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2985982\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h336003FBFFFFFFFE; + ReadData3E = 64'hC01FFFFFFFF00006; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2986983\n"); + end + ReadData1E = 64'hC000000000000102; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h43C2828241BEC51F; + ans = 64'h43C2828241BEC51F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2987984\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h3808D4101DAC7D2F; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2988985\n"); + end + ReadData1E = 64'hC1CFFFFF78000000; + ReadData2E = 64'h3FB1000000000FFF; + ReadData3E = 64'hACB0000000400002; + ans = 64'hC190FFFFB7C00FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2989986\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2990987\n"); + end + ReadData1E = 64'hF548B84F8AF73F10; + ReadData2E = 64'hB12CFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2991988\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'hC0300200001FFFFF; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2992989\n"); + end + ReadData1E = 64'h7FF0000007DFFFFF; + ReadData2E = 64'hFFFA9034BB075DDD; + ReadData3E = 64'h3AC0000FFFFFFFF8; + ans = 64'hFFFA9034BB075DDD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2993990\n"); + end + ReadData1E = 64'hC7F91D71F24F648D; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2994991\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h43EFE00000000007; + ReadData3E = 64'hC85FFFFFFEF80000; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2995992\n"); + end + ReadData1E = 64'h47F000000000403F; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h3FCD4CCDC416DDC3; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2996993\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFF; + ReadData2E = 64'h3FCDFFFFFDFFFFFF; + ReadData3E = 64'h8010000000000001; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2997994\n"); + end + ReadData1E = 64'hBFC000000003DFFF; + ReadData2E = 64'hBFB00FFFE0000000; + ReadData3E = 64'h422FEFFFFFFFFF7F; + ans = 64'h422FF00000000383; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2998995\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"2999996\n"); + end + ReadData1E = 64'h402FFFE00000000E; + ReadData2E = 64'h5DFFFFF080000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h5E3FFFD0800F800E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3000997\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'hBC6FFFEFFEFFFFFF; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3001998\n"); + end + ReadData1E = 64'hB810007FFFEFFFFF; + ReadData2E = 64'hD3CFFFFFFFFF8001; + ReadData3E = 64'h47F0100000000004; + ans = 64'h4BF0007FFFEFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3002999\n"); + end + ReadData1E = 64'hAAFCFDA8FE659E8A; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3004000\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'hBFB00000001DFFFE; + ReadData3E = 64'h7FE0007FFFFFBFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3005001\n"); + end + ReadData1E = 64'hC01FFFFFEFFFFFE0; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFBF7; + ans = 64'h8050FFFFF7FFFFAE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3006002\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'hB3C0000004003FFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3007003\n"); + end + ReadData1E = 64'h37FFF80000004000; + ReadData2E = 64'hC00507DE1C7B4FDF; + ReadData3E = 64'hC01FFBFFFFFFFFFB; + ans = 64'hC01FFBFFFFFFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3008004\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3009005\n"); + end + ReadData1E = 64'hC01000000004003F; + ReadData2E = 64'h3FBFFFFFFFBFFF7F; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFF7FFFFFFF1FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3010006\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h40191EF40452A88D; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3011007\n"); + end + ReadData1E = 64'h38100000007FFFDE; + ReadData2E = 64'h3CAFFFFFFFFFFFEB; + ReadData3E = 64'h3FE54894F13E1BC6; + ans = 64'h3FE54894F13E1BC6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3012008\n"); + end + ReadData1E = 64'h3FD666E646C8C206; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'h3FC666E646C8C206; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3013009\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFEFFDF; + ReadData3E = 64'hB0D03FFFFFFFFFC0; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3014010\n"); + end + ReadData1E = 64'h3DB00002FFFFFFFF; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hBF600003FFFFFFC0; + ans = 64'hBF600003FDFFFF60; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3015011\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'hC3DFFFFFFFFE03FE; + ReadData3E = 64'h4000000000000001; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3016012\n"); + end + ReadData1E = 64'hC29FFDFFFFFFFFE0; + ReadData2E = 64'h37EFFFFDBFFFFFFF; + ReadData3E = 64'h723000000020001E; + ans = 64'h723000000020001E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3017013\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3018014\n"); + end + ReadData1E = 64'hBF100001FFFBFFFF; + ReadData2E = 64'h823FF7FFFDFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h015FF805FCF801BD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3019015\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h410001F000000000; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3020016\n"); + end + ReadData1E = 64'h37FFF7FFFF7FFFFF; + ReadData2E = 64'h37F000001FEFFFFF; + ReadData3E = 64'h3FCF000000FFFFFF; + ans = 64'h3FCF000000FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3021017\n"); + end + ReadData1E = 64'h396DFFFFFFFEFFFF; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3022018\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h4010D405CEB3C97F; + ReadData3E = 64'hC03DFFFFFFFFE000; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3023019\n"); + end + ReadData1E = 64'hBFC647C0C08C22CB; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h3E6C8D21385E3B19; + ans = 64'hBFF647C0B245922E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3024020\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h59300001FC000000; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3025021\n"); + end + ReadData1E = 64'h41CFF8000000001F; + ReadData2E = 64'h5DDAB126D7E39DAE; + ReadData3E = 64'h7FDC3FFFFFFFFFFF; + ans = 64'h7FDC3FFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3026022\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3027023\n"); + end + ReadData1E = 64'h402FFFFFFFBFF7FF; + ReadData2E = 64'h403053268768D0BB; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3028024\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h403BE121E927E586; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3029025\n"); + end + ReadData1E = 64'h4EB0007DFFFFFFFF; + ReadData2E = 64'hBF3FFBBFFFFFFFFF; + ReadData3E = 64'hC340000003EFFFFF; + ans = 64'hCDFFFCBBDE87FFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3030026\n"); + end + ReadData1E = 64'h41E00000DFFFFFFF; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3031027\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h43E7CC3FA4D64E37; + ReadData3E = 64'hFFEFEFFFFFFFFFF6; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3032028\n"); + end + ReadData1E = 64'h40103FFFFF7FFFFF; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'hC3FEFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3033029\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h3F3FFFFFFFBFFFBF; + ReadData3E = 64'h0000000000000001; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3034030\n"); + end + ReadData1E = 64'h37ECF9942202B814; + ReadData2E = 64'hC0B0004000000020; + ReadData3E = 64'hC3C3FEFFFFFFFFFE; + ans = 64'hC3C3FEFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3035031\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3036032\n"); + end + ReadData1E = 64'hC80FFFFFF7FFFFFC; + ReadData2E = 64'h3FFFFFFFEFFBFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC81FFFFFE7FBFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3037033\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h43FFFBF7FFFFFFFF; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3038034\n"); + end + ReadData1E = 64'h44F271F27D769725; + ReadData2E = 64'h3FF0003FFF7FFFFF; + ReadData3E = 64'h451FFFFEFFFFFFFE; + ans = 64'h45224E4708959FAC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3039035\n"); + end + ReadData1E = 64'hC0300000040001FF; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3040036\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h3FBFFFFFFEFFFBFF; + ReadData3E = 64'hC03003FFFFDFFFFF; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3041037\n"); + end + ReadData1E = 64'hBECFFFFE00FFFFFF; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h873FFFBFFEFFFFFF; + ans = 64'h3B7FFFFE01000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3042038\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h407258981961D84A; + ReadData3E = 64'h4340000000000001; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3043039\n"); + end + ReadData1E = 64'hBE07FFDFFFFFFFFF; + ReadData2E = 64'hC3FEBDE02B00377A; + ReadData3E = 64'h40A02EC4B2B0A395; + ans = 64'h42170E4982BD8800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3044040\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3045041\n"); + end + ReadData1E = 64'hF8C4A99FA335A642; + ReadData2E = 64'h3FDFFFFFFC0FFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hF8B4A99FA0AAC71C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3046042\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h41900000007FFFFF; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3047043\n"); + end + ReadData1E = 64'h401FFFBFF0000000; + ReadData2E = 64'h3FF1FFFFFFFFFFF7; + ReadData3E = 64'h3FE2F740A7059AFE; + ans = 64'h40232F50017059A7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3048044\n"); + end + ReadData1E = 64'hBFE0001FFFFFFBFE; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3049045\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h3F8FFE8000000000; + ReadData3E = 64'hBFDF04E8180BE2DF; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3050046\n"); + end + ReadData1E = 64'hC04046D2F2EBC845; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hB7F000000400007E; + ans = 64'h404046D2F2EBC845; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3051047\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h02E00FFFFFFFFDFE; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3052048\n"); + end + ReadData1E = 64'hBFF081B99D048027; + ReadData2E = 64'h7FDBD67CC1F0BF0D; + ReadData3E = 64'h2CE94041675CBCF4; + ans = 64'hFFDCB83100FF6347; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3053049\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3054050\n"); + end + ReadData1E = 64'h802FFFFFFFFFFFCF; + ReadData2E = 64'hC010000003FFBFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h004E000007FF7FCD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3055051\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h001AABCBCFF4DB7B; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3056052\n"); + end + ReadData1E = 64'h3810004000000000; + ReadData2E = 64'hC1F38DBB9FA53F37; + ReadData3E = 64'h5CE4F6AC321FBB68; + ans = 64'h5CE4F6AC321FBB68; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3057053\n"); + end + ReadData1E = 64'hB240001020000000; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3058054\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h3FCB7D346320D4D8; + ReadData3E = 64'hBFAFFFFFFFF0003F; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3059055\n"); + end + ReadData1E = 64'hDD58FAAD1850A1BE; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hC0D7E6839BB2BBD2; + ans = 64'h5D88FAAD1850A1BC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3060056\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h91E00080007FFFFE; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3061057\n"); + end + ReadData1E = 64'hB81003FFFFFFFFFC; + ReadData2E = 64'hBFEFF40000000000; + ReadData3E = 64'h3E90000020000008; + ans = 64'h3E90000020000008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3062058\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3063059\n"); + end + ReadData1E = 64'hBFD08C29FD9E48B5; + ReadData2E = 64'h3FB8000000000200; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3064060\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'hB819E9736AA9FCFA; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3065061\n"); + end + ReadData1E = 64'hFFF7FFFFFFF7FFFE; + ReadData2E = 64'h802FFFDFFFEFFFFF; + ReadData3E = 64'h00007FFFFFFEFFFF; + ans = 64'hFFFFFFFFFFF7FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3066062\n"); + end + ReadData1E = 64'hBFFFFC00000007FF; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3067063\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFFFE; + ReadData2E = 64'h3FC4E9D3D378B53D; + ReadData3E = 64'h3FA000200000000F; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3068064\n"); + end + ReadData1E = 64'h300000001FFFFDFF; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h430270BDA53AD229; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3069065\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h4006AA538B9FDD3D; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3070066\n"); + end + ReadData1E = 64'hBFDFFFF7FFFFFF7F; + ReadData2E = 64'h3FE000000100000F; + ReadData3E = 64'h480000000040007F; + ans = 64'h480000000040007F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3071067\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3072068\n"); + end + ReadData1E = 64'hB71FA9F3AD1F6032; + ReadData2E = 64'h40200007FFFFFBFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3073069\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h373000000000807F; + ans = 64'h373000000000807F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3074070\n"); + end + ReadData1E = 64'h3F000000004FFFFE; + ReadData2E = 64'hBCAC000200000000; + ReadData3E = 64'h434C16CBDCF01F65; + ans = 64'h434C16CBDCF01F65; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3075071\n"); + end + ReadData1E = 64'h657FFFFFFFFDFFC0; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h0010000000000000; + ans = 64'h622FFFFFFFFDFFC0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3076072\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'hC7F0001FFFFFFBFE; + ReadData3E = 64'h38009FFFFFFFFFFF; + ans = 64'h38009FFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3077073\n"); + end + ReadData1E = 64'hC800040003FFFFFE; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'hBF300000000003FD; + ans = 64'hC4C0040003FFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3078074\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h99F020000000001F; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3079075\n"); + end + ReadData1E = 64'hBFEFFF8000000007; + ReadData2E = 64'h3DA100000007FFFE; + ReadData3E = 64'hC3D299B4DFA917CA; + ans = 64'hC3D299B4DFA917CA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3080076\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3081077\n"); + end + ReadData1E = 64'hC3E000000400FFFE; + ReadData2E = 64'hB91FDF7FFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h3D0F5F8007F9DDF2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3082078\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hBFC0000FFFFFFFFB; + ans = 64'hBFC0000FFFFFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3083079\n"); + end + ReadData1E = 64'hA75DFFFFFBFFFFFE; + ReadData2E = 64'h7FD00FF800000000; + ReadData3E = 64'h7FFFB7F4D0C9C017; + ans = 64'h7FFFB7F4D0C9C017; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3084080\n"); + end + ReadData1E = 64'h7FF003F000000000; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FF803F000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3085081\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h47EFFFFF7FFFFFFE; + ReadData3E = 64'h802FFFFBFF7FFFFF; + ans = 64'h802FFFFBFF7FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3086082\n"); + end + ReadData1E = 64'hBAA7B373A0E499AD; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h41CF800020000000; + ans = 64'h41CF800020000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3087083\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'hF2300003FFEFFFFF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3088084\n"); + end + ReadData1E = 64'hC09921A938F2237E; + ReadData2E = 64'hC3F00020001FFFFE; + ReadData3E = 64'h41C00000FFFFFFFE; + ans = 64'h449921DB7C76D932; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3089085\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3090086\n"); + end + ReadData1E = 64'hBFE563886CA472B3; + ReadData2E = 64'h00207FFFBFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3091087\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h40000000000000EF; + ans = 64'h40000000000000EF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3092088\n"); + end + ReadData1E = 64'hC3D0010000000040; + ReadData2E = 64'hBFCFFFC000001FFF; + ReadData3E = 64'hBFDFFFDFFFFDFFFF; + ans = 64'h43B000DFFE001040; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3093089\n"); + end + ReadData1E = 64'hFFD917679344F70E; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3094090\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'hA9F65469EE7D5563; + ReadData3E = 64'hC5CFFF8000000200; + ans = 64'hC5CFFF8000000200; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3095091\n"); + end + ReadData1E = 64'h001672402426EFE0; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h801000000003BFFF; + ans = 64'h036672402426EFE1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3096092\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h47EFFFF3FFFFFFFE; + ReadData3E = 64'h8010000000000001; + ans = 64'h8010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3097093\n"); + end + ReadData1E = 64'hCC9514055BD9848C; + ReadData2E = 64'hC3F0002003FFFFFF; + ReadData3E = 64'h3FFFF00000000FFE; + ans = 64'h5095142F89293D95; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3098094\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h001FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3099095\n"); + end + ReadData1E = 64'h412FC00000000008; + ReadData2E = 64'h402FFC00001FFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h416FBC09001FC007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3100096\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h43C000040007FFFE; + ans = 64'h43C000040007FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3101097\n"); + end + ReadData1E = 64'h404F9FFFFFFFFFFF; + ReadData2E = 64'hC1100000FFFFF000; + ReadData3E = 64'hBC200FFFBFFFFFFE; + ans = 64'hC16FA001F9FFE05F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3102098\n"); + end + ReadData1E = 64'hD4EFFEFFFFFFFBFE; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3103099\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h802FFFFEFFFFF000; + ReadData3E = 64'h8010477F25A7C94B; + ans = 64'h8010477F25A7C94B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3104100\n"); + end + ReadData1E = 64'hEB60000000000440; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h3E4B8DF231175A76; + ans = 64'h3E4B8DF231175A76; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3105101\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'hC23081FFFFFFFFFE; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3106102\n"); + end + ReadData1E = 64'hC7017395B7506FEF; + ReadData2E = 64'hEE4FDFFFFFFDFFFE; + ReadData3E = 64'hC03FFFFF00000010; + ans = 64'h7561622221980845; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3107103\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3108104\n"); + end + ReadData1E = 64'h0CBFFFFFFFFFFFFE; + ReadData2E = 64'hC7E0000007FFFEFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3109105\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h3EE7FFFFFFFFBFFE; + ans = 64'h3EE7FFFFFFFFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3110106\n"); + end + ReadData1E = 64'h24E00023FFFFFFFF; + ReadData2E = 64'h3FF0F2BB22DD70CC; + ReadData3E = 64'h403FFFFFFF7F7FFF; + ans = 64'h403FFFFFFF7F7FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3111107\n"); + end + ReadData1E = 64'hC07000200001FFFE; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h8000000000000000; + ans = 64'h3D2000200001FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3112108\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h47FF7FFFFFF7FFFF; + ReadData3E = 64'h3F48DBDA639F3F60; + ans = 64'h3F48DBDA639F3F60; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3113109\n"); + end + ReadData1E = 64'h4020000003FFFF00; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h381FFFFFFFF0003E; + ans = 64'hC000000003FFFF00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3114110\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h37FFFF7FFFF80000; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3115111\n"); + end + ReadData1E = 64'h43C4000000007FFE; + ReadData2E = 64'hBEF000000000005E; + ReadData3E = 64'h4181FA0FC18B7A3A; + ans = 64'hC2C3FFFEE05F845B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3116112\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3117113\n"); + end + ReadData1E = 64'h16C00000000007DF; + ReadData2E = 64'hC22FC0000000007E; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h98FFC0000000101D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3118114\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h3FEFFFFFBFDFFFFE; + ans = 64'h3FEFFFFFBFDFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3119115\n"); + end + ReadData1E = 64'h43C0000020000FFF; + ReadData2E = 64'h89120007FFFFFFFE; + ReadData3E = 64'h40129D31F38D9068; + ans = 64'h40129D31F38D9068; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3120116\n"); + end + ReadData1E = 64'hC00FFFFEFFEFFFFF; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hC340000000000000; + ans = 64'hC33FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3121117\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'h41C00020007FFFFE; + ReadData3E = 64'h43EFFFFDFFFFFFDF; + ans = 64'h43EFFFFDFFFFFFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3122118\n"); + end + ReadData1E = 64'hBFFFE000000000FE; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h41EF800007FFFFFF; + ans = 64'h41EF8000087F7FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3123119\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'hC17008000000FFFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3124120\n"); + end + ReadData1E = 64'h3FBF31FFDF2CCEFB; + ReadData2E = 64'h3CAA17B864B00A57; + ReadData3E = 64'h3FCFFF5FFFFFFFFE; + ans = 64'h3FCFFF5FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3125121\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3126122\n"); + end + ReadData1E = 64'hBF90000200040000; + ReadData2E = 64'h3FF000002000003E; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3127123\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h5950000C00000000; + ans = 64'h5950000C00000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3128124\n"); + end + ReadData1E = 64'hC1907FFFFFFFFFFF; + ReadData2E = 64'h43CFFFFEFFBFFFFF; + ReadData3E = 64'hBFF0000400000001; + ans = 64'hC5707FFF7BDEFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3129125\n"); + end + ReadData1E = 64'hBFB2467A10F81D4C; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h4302467A10F81D54; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3130126\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'hA9F0000003FFFFEF; + ReadData3E = 64'h3EAF7FFFFFF00000; + ans = 64'h3EAF7FFFFFF00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3131127\n"); + end + ReadData1E = 64'hC06F000000080000; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'hCB703FFFFFEFFFFF; + ans = 64'hCB703FFFFFEFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3132128\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'hC7E7C401FD3E0977; + ReadData3E = 64'h0000000000000001; + ans = 64'h0000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3133129\n"); + end + ReadData1E = 64'h41E017FFFFFFFFFF; + ReadData2E = 64'h4300000000000082; + ReadData3E = 64'hB258AAECB31FC29E; + ans = 64'h44F0180000000082; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3134130\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h800FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3135131\n"); + end + ReadData1E = 64'hBF1000000007FFEF; + ReadData2E = 64'h319FFFFFF77FFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3136132\n"); + end + ReadData1E = 64'h8000000000000000; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'hFFD000000040000F; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3137133\n"); + end + ReadData1E = 64'hBFB00004001FFFFF; + ReadData2E = 64'hC03FFEFFFFFF7FFF; + ReadData3E = 64'h440B833827EB152B; + ans = 64'h440B833827EB152B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3138134\n"); + end + ReadData1E = 64'hC7FFDFFFF7FFFFFF; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3139135\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hFD45F248C0CC670F; + ReadData3E = 64'hBFCFFE01FFFFFFFE; + ans = 64'hBFCFFE01FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3140136\n"); + end + ReadData1E = 64'hC1C8A94B05575819; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h40FFFFFFFE0001FF; + ans = 64'h40FFFFFFFE0001FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3141137\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hC1EB3B9AC6479B74; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3142138\n"); + end + ReadData1E = 64'hBFCFFFFFFFF80400; + ReadData2E = 64'h41F1FFF7FFFFFFFF; + ReadData3E = 64'h7FD0007FEFFFFFFE; + ans = 64'h7FD0007FEFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3143139\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3144140\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFC10; + ReadData2E = 64'hBD50FAB97164E136; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFC10; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3145141\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'hBC3FFFDEFFFFFFFF; + ans = 64'hBC3FFFDEFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3146142\n"); + end + ReadData1E = 64'h0010916ED93A4F7D; + ReadData2E = 64'h404FFFFFEFFFEFFE; + ReadData3E = 64'hC3FFFFFFFFFFFE0E; + ans = 64'hC3FFFFFFFFFFFE0E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3147143\n"); + end + ReadData1E = 64'hC3ED34FF9EBA9A7F; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3148144\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h403FFFFE00003FFF; + ReadData3E = 64'h480FFE00FFFFFFFF; + ans = 64'h480FFE00FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3149145\n"); + end + ReadData1E = 64'hB800008000000FFF; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'hFFD000000003FFEF; + ans = 64'hFFD000000003FFEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3150146\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h37F00020003FFFFE; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3151147\n"); + end + ReadData1E = 64'hBFA00001FFFFDFFF; + ReadData2E = 64'hBFF000000007FFF8; + ReadData3E = 64'h0E4FFFFFFFB00000; + ans = 64'h3FA000020007DFF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3152148\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3153149\n"); + end + ReadData1E = 64'h40FFBFFFFFDFFFFF; + ReadData2E = 64'h4800001FFFF7FFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h490FC03F7FD01FBB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3154150\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hBCA55F7E8B2DEE88; + ans = 64'hBCA55F7E8B2DEE88; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3155151\n"); + end + ReadData1E = 64'hC3E0000003FFFFBF; + ReadData2E = 64'h3FB6BA70DD5A81EF; + ReadData3E = 64'h4D7000000010001F; + ans = 64'h4D7000000010001F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3156152\n"); + end + ReadData1E = 64'hB6DC3FFFFFFFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3157153\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hFFFF6600A2627F38; + ReadData3E = 64'hFFEFFFFF02000000; + ans = 64'hFFFF6600A2627F38; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3158154\n"); + end + ReadData1E = 64'hC03BFFFC00000000; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h41CF7FFFFFFFFF7E; + ans = 64'h41CF7FFFE400037E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3159155\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hC22FFFFFFFC00200; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3160156\n"); + end + ReadData1E = 64'hC018634C61EA369A; + ReadData2E = 64'h480FFFFFFBEFFFFF; + ReadData3E = 64'hBFCFC00000000006; + ans = 64'hC838634C5ED19B67; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3161157\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3162158\n"); + end + ReadData1E = 64'h0020000400010000; + ReadData2E = 64'hC02000203FFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3163159\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'hBFC01FFFFFC00000; + ans = 64'hBFC01FFFFFC00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3164160\n"); + end + ReadData1E = 64'hC3C03FFFFFFFFFFF; + ReadData2E = 64'h97B007FFFFFFFF80; + ReadData3E = 64'h4010000000000047; + ans = 64'h4010000000000047; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3165161\n"); + end + ReadData1E = 64'h876DFFFFFFDFFFFF; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3166162\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h43CFFFFF80003FFF; + ReadData3E = 64'hC0088720CA1B7D9A; + ans = 64'hC0088720CA1B7D9A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3167163\n"); + end + ReadData1E = 64'h3F61E925D185F10A; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h43EA05AEB59EABB3; + ans = 64'h7F51E925D185F10A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3168164\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h38005B99F36C2F9F; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3169165\n"); + end + ReadData1E = 64'h3F4F000000000020; + ReadData2E = 64'h7FD00000200007FF; + ReadData3E = 64'h41D13E1202E44CB3; + ans = 64'h7F2F00003E000F9E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3170166\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3171167\n"); + end + ReadData1E = 64'hC3DF7870AE492D29; + ReadData2E = 64'h43EFFFFFFBFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hC7DF7870AA5A1F11; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3172168\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'hB0B1000000007FFF; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3173169\n"); + end + ReadData1E = 64'h43F7C0540E92930E; + ReadData2E = 64'h8000000000000BFF; + ReadData3E = 64'hC80FFFFFFBFEFFFF; + ans = 64'hC80FFFFFFBFEFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3174170\n"); + end + ReadData1E = 64'h3F300004000003FF; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'h0010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3175171\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hBE5007FFFFFFFFF8; + ReadData3E = 64'h800FFFFDFFFDFFFF; + ans = 64'h800FFFFDFFFDFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3176172\n"); + end + ReadData1E = 64'hC1EFFFFFFFC0007F; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'hAEA00000003E0000; + ans = 64'hAEA00000003E0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3177173\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h3FF0000010000008; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3178174\n"); + end + ReadData1E = 64'hC1FFFFF0001FFFFE; + ReadData2E = 64'hC341FFFFFFFFDFFE; + ReadData3E = 64'hBFCFFFFFBFFFEFFE; + ans = 64'h4551FFF70011DFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3179175\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3180176\n"); + end + ReadData1E = 64'hBFF00001FFBFFFFF; + ReadData2E = 64'h3FD000FFFFFFFEFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBFD00101FFDFFB01; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3181177\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h7FEFFFFDFFFFF000; + ans = 64'h7FEFFFFDFFFFF000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3182178\n"); + end + ReadData1E = 64'h4C3FFFFFFFFFE020; + ReadData2E = 64'h4050000003F7FFFE; + ReadData3E = 64'h37FBA1FEAC0BA335; + ans = 64'h4CA0000003F7F00E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3183179\n"); + end + ReadData1E = 64'h47F001FFFFFFFFEF; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3184180\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h403CF6BD9859E404; + ReadData3E = 64'h966FD77904F139E5; + ans = 64'h966FD77904F139E5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3185181\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h43E0800000000080; + ans = 64'h43E0800000000080; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3186182\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h3FDFFFFFC1FFFFFE; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3187183\n"); + end + ReadData1E = 64'h3F000FFFFFFFBFFF; + ReadData2E = 64'hB81278AC863B2F56; + ReadData3E = 64'h41EFFFF07FFFFFFF; + ans = 64'h41EFFFF07FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3188184\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3189185\n"); + end + ReadData1E = 64'hC04F844A061FCE58; + ReadData2E = 64'h3FB0000FFFFEFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3190186\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'hC1F03FFFFFDFFFFE; + ans = 64'hC1F03FFFFFDFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3191187\n"); + end + ReadData1E = 64'hC3E00001BFFFFFFF; + ReadData2E = 64'h43D3FFFFFFF7FFFF; + ReadData3E = 64'h40154F5E24ED3135; + ans = 64'hC7C400022FF7FFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3192188\n"); + end + ReadData1E = 64'h427FFFFFE01FFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'hC28FFFFFE0200FFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3193189\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hE9AFFFFFFFFBFFFF; + ReadData3E = 64'h000B794664F9ABF4; + ans = 64'h268FFFFFFFFBFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3194190\n"); + end + ReadData1E = 64'h405FFF0000001FFF; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h7FEBA958DF1D0B5D; + ans = 64'h7FEBA958DF1D0B5D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3195191\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'h3961FFFFFFFFFFEE; + ReadData3E = 64'h8010000000000001; + ans = 64'h8010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3196192\n"); + end + ReadData1E = 64'h41F762992C28D42B; + ReadData2E = 64'h39408024F5F5BD9B; + ReadData3E = 64'hC3400000000E0000; + ans = 64'hC3400000000E0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3197193\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h0020000000000003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3198194\n"); + end + ReadData1E = 64'h41FFFFFFFFFFEFFC; + ReadData2E = 64'hC3DFFFFFFFFFF820; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hC5EFFFFFFFFFE81C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3199195\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'hC12DFFFFFFFFFF7F; + ans = 64'hC12DFFFFFFFFFF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3200196\n"); + end + ReadData1E = 64'h3FCE000020000000; + ReadData2E = 64'h408CC1F9E0A1F7DC; + ReadData3E = 64'h41DFFBFFFFFFFFFA; + ans = 64'h41DFFC0035EBB4B9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3201197\n"); + end + ReadData1E = 64'hFFDFFFF0000003FF; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3202198\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hCD00800000FFFFFF; + ReadData3E = 64'hC03E7F76B5E1CDFE; + ans = 64'hC03E7F76B5E1CDFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3203199\n"); + end + ReadData1E = 64'h4470000023FFFFFF; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'hB802000001FFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3204200\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hC07FFFDFFFFFFF7F; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3205201\n"); + end + ReadData1E = 64'hC7E4001FFFFFFFFF; + ReadData2E = 64'h4A20000FFFFFDFFF; + ReadData3E = 64'h3A21CB9E8873715E; + ans = 64'hD2140034001FD7FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3206202\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3207203\n"); + end + ReadData1E = 64'hC1F0082000000000; + ReadData2E = 64'hC34D800000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h454D8EFB00000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3208204\n"); + end + ReadData1E = 64'h8000000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'hBE8AA98D9EFDED8E; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3209205\n"); + end + ReadData1E = 64'hC19B268510026FE1; + ReadData2E = 64'h3F10000200080000; + ReadData3E = 64'h40100000000008FE; + ans = 64'hC0BB228874E0A522; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3210206\n"); + end + ReadData1E = 64'hA2110FFBFAC5B667; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'h8000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3211207\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h41200001FFFFDFFF; + ReadData3E = 64'hC100000100000800; + ans = 64'hC100000100000800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3212208\n"); + end + ReadData1E = 64'h4030200000000002; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h37E0083FFFFFFFFF; + ans = 64'h37E0083FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3213209\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hC80C7AD75C821BCA; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3214210\n"); + end + ReadData1E = 64'hFFD000021FFFFFFE; + ReadData2E = 64'hC1F5C3A3AD004936; + ReadData3E = 64'hC040000000100FFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3215211\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3216212\n"); + end + ReadData1E = 64'h3F41000000000010; + ReadData2E = 64'h3FC0000040001000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h3F11000044001110; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3217213\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h438C0236202A0BBA; + ans = 64'h438C0236202A0BBA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3218214\n"); + end + ReadData1E = 64'hC3C0001004000000; + ReadData2E = 64'hC1F4F452646DA56A; + ReadData3E = 64'h41CFFFFBFFFFFFFE; + ans = 64'h45C4F4675DFD1E71; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3219215\n"); + end + ReadData1E = 64'hC3D2145EDB3D4313; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'hC3B2345EDB3D4314; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3220216\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hBC70081000000000; + ReadData3E = 64'hACDFFFFF8007FFFF; + ans = 64'hACDFFFFF8007FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3221217\n"); + end + ReadData1E = 64'h41DFFFFFFDFFFBFF; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h0002CF54C6860C5D; + ans = 64'h41CFFFFFFDFFFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3222218\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hC1C00000003FF7FF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3223219\n"); + end + ReadData1E = 64'hB80329DA08F1C768; + ReadData2E = 64'hC3E0000001000800; + ReadData3E = 64'h89C00000000005FF; + ans = 64'h3BF329DA0A246E9D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3224220\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3225221\n"); + end + ReadData1E = 64'h3850077FFFFFFFFF; + ReadData2E = 64'h3C4FFF0000004000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3226222\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h0010000400000010; + ans = 64'h800FFFFBFFFFFFED; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3227223\n"); + end + ReadData1E = 64'hB7F0000003FFE000; + ReadData2E = 64'h3EB000000201FFFF; + ReadData3E = 64'h3FF0001000000040; + ans = 64'h3FF0001000000040; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3228224\n"); + end + ReadData1E = 64'hC1C1F426BD904BF0; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hC1D1F426BD504BF1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3229225\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hC17800000003FFFF; + ReadData3E = 64'hC9A03FFFFFFDFFFF; + ans = 64'hC9A03FFFFFFDFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3230226\n"); + end + ReadData1E = 64'hD24FE001FFFFFFFF; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFC002000000; + ans = 64'hD26FE001FFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3231227\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h4DAC020000000000; + ReadData3E = 64'h0000000000000001; + ans = 64'h8DCC01FFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3232228\n"); + end + ReadData1E = 64'h406FFEFFFFFFFFF7; + ReadData2E = 64'hC010000FFFFFFFEF; + ReadData3E = 64'hC800007FFFFFFFFB; + ans = 64'hC800007FFFFFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3233229\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h8041FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3234230\n"); + end + ReadData1E = 64'hDB1000FFFFFFFFF7; + ReadData2E = 64'hB140000048000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h4C60010048047FF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3235231\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h40919819FD9E586D; + ans = 64'h40919819FD9E586D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3236232\n"); + end + ReadData1E = 64'hC0DAB9C07683188D; + ReadData2E = 64'hBFE00003FFFFFFC0; + ReadData3E = 64'h43EFFFFFFFFF7FFF; + ans = 64'h43EFFFFFFFFF8006; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3237233\n"); + end + ReadData1E = 64'h3F8FFFFFFFFFFC0F; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h7F7FFFFFFFFFFC0F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3238234\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h801FC00003FFFFFF; + ReadData3E = 64'h43480602358262CE; + ans = 64'h43480602358262CE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3239235\n"); + end + ReadData1E = 64'hAFA000000FFF0000; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h47E00007FFFF7FFF; + ans = 64'hEFA000000FFEFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3240236\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h4070000000010002; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3241237\n"); + end + ReadData1E = 64'hFFFFFFFFFF7FFFF0; + ReadData2E = 64'hBE3FFFFFEFFFFFFD; + ReadData3E = 64'h41F03830BFD60644; + ans = 64'hFFFFFFFFFF7FFFF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3242238\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3243239\n"); + end + ReadData1E = 64'hB818480E1470663F; + ReadData2E = 64'hC3EFFFFFFFFE1000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3244240\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h47FDFFFFFFFFF7FE; + ans = 64'h47FDFFFFFFFFF7FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3245241\n"); + end + ReadData1E = 64'h3FBFFF800007FFFF; + ReadData2E = 64'hB812F934F52947CE; + ReadData3E = 64'hC11000001FFFEFFE; + ans = 64'hC11000001FFFEFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3246242\n"); + end + ReadData1E = 64'h3FB433D94F35527E; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3247243\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hE4CFFFFFDFFE0000; + ReadData3E = 64'h3EFE95C18BD6BC46; + ans = 64'h3EFE95C18BD6BC46; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3248244\n"); + end + ReadData1E = 64'hB7EFFDFFFFFFFFF7; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h43BDE7B73DE18CFF; + ans = 64'h43BDE7B73DE18CFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3249245\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h3DA3FFFFFFFFFDFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3250246\n"); + end + ReadData1E = 64'h40FFFDFFFBFFFFFF; + ReadData2E = 64'h40E9BE253BF836C9; + ReadData3E = 64'h3F8FFFFFFFFFF7FF; + ans = 64'h41F9BC89566CF29D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3251247\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3252248\n"); + end + ReadData1E = 64'hFB6FFFFFFFF8007F; + ReadData2E = 64'h22400FFFFFFFFBFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hDDC00FFFFFFBF83E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3253249\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'hB7EFFFFFF807FFFF; + ans = 64'hB7EFFFFFF807FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3254250\n"); + end + ReadData1E = 64'h3CA6938A70E67C97; + ReadData2E = 64'h47FFFFFFFCFFFFFF; + ReadData3E = 64'hC34FFFFEFFFFFF00; + ans = 64'h44B6938A2EC8A99C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3255251\n"); + end + ReadData1E = 64'hD8EFFEFFFFFFC000; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'h58DFFEFFFFFFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3256252\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hC15FFF007FFFFFFE; + ReadData3E = 64'hC0B3C2DF6714053D; + ans = 64'hC0B3C2DF6714053D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3257253\n"); + end + ReadData1E = 64'hBFCFFFFF03FFFFFE; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h3FC183559B4FF963; + ans = 64'h3FD0C1AA8EA7FCB1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3258254\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hFFD0785826C0D594; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3FF0785826C0D593; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3259255\n"); + end + ReadData1E = 64'h4190A15773848A23; + ReadData2E = 64'h3F8000000040007F; + ReadData3E = 64'hBA00001000001000; + ans = 64'h4120A15773C71005; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3260256\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3261257\n"); + end + ReadData1E = 64'h000000000000400E; + ReadData2E = 64'h15DFFFFFFFFFFDC0; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3262258\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h455FE00000000010; + ans = 64'h455FE00000000010; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3263259\n"); + end + ReadData1E = 64'hC02FFFFEFFFFF7FF; + ReadData2E = 64'hB7F0000004000008; + ReadData3E = 64'h3E17B6AC83ED00CE; + ans = 64'h3E17B6AC83ED00CE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3264260\n"); + end + ReadData1E = 64'hC07FFFFFF7FFF7FF; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h409FFDFFF7FFF7FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3265261\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h400FFFFFEFDFFFFF; + ReadData3E = 64'hC0148E62626E1A69; + ans = 64'hC0148E62626E1A69; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3266262\n"); + end + ReadData1E = 64'hC7FFFFB7FFFFFFFF; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h4342E9EE84C7021F; + ans = 64'h481FFFB800000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3267263\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'h40504001FFFFFFFF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3268264\n"); + end + ReadData1E = 64'hC7FF5C33C4617C31; + ReadData2E = 64'hC00FFFFFFEFFDFFF; + ReadData3E = 64'h3FFBCB2D446CB149; + ans = 64'h481F5C33C3667B36; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3269265\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3270266\n"); + end + ReadData1E = 64'h002004000003FFFF; + ReadData2E = 64'hBCDC4104F1CF94E7; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3271267\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'hC3D857CD57577151; + ans = 64'hC3D857CD57577151; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3272268\n"); + end + ReadData1E = 64'h3FBFFFFF3FFFFFFE; + ReadData2E = 64'hBFEFFFFFFFC00007; + ReadData3E = 64'h4007FF7FFFFFFFFF; + ans = 64'h4006FF800601FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3273269\n"); + end + ReadData1E = 64'h43627F4ABB7A5C8E; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3274270\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hC7F7FFDFFFFFFFFF; + ReadData3E = 64'h3E0FFFFFFE7FFFFF; + ans = 64'h3E0FFFFFFE7FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3275271\n"); + end + ReadData1E = 64'h3CA96C636CAB2606; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h40C03FFFFFFFDFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3276272\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFF; + ReadData2E = 64'hBD0FFFEFF7FFFFFF; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3277273\n"); + end + ReadData1E = 64'hC036E85CEC65419F; + ReadData2E = 64'hC96000000E000000; + ReadData3E = 64'hC7E1FFFFFFFFFC00; + ans = 64'h49A6E85CFF5092EE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3278274\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3279275\n"); + end + ReadData1E = 64'hBCA7C5E0D79CD402; + ReadData2E = 64'h5C0FFFFFFFFF7FDF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hD8C7C5E0D79C74D2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3280276\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'hB813CE68D7859945; + ans = 64'hB813CE68D7859945; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3281277\n"); + end + ReadData1E = 64'h11EC49898ABE0DE0; + ReadData2E = 64'h47FA789C5C50B5C1; + ReadData3E = 64'h3FB000000007FFC0; + ans = 64'h3FB000000007FFC0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3282278\n"); + end + ReadData1E = 64'hC4DFFFFFFFF80FFF; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3283279\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h7FE0000000004001; + ReadData3E = 64'hC1D6C87072E7B4B3; + ans = 64'hC1D6C8707367B4B3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3284280\n"); + end + ReadData1E = 64'h426FFFF800000008; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'hE697DD2A5C404D6E; + ans = 64'hE697DD2A5C404D6E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3285281\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h3F40000000040800; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3286282\n"); + end + ReadData1E = 64'h0C5FFFFF80000080; + ReadData2E = 64'hB5CE00000000007F; + ReadData3E = 64'h41C3DFFFFFFFFFFF; + ans = 64'h41C3DFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3287283\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3288284\n"); + end + ReadData1E = 64'hFFD0004000000080; + ReadData2E = 64'h400FFFFFFFFF8010; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3289285\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h41DFFFFFFFBFFFFA; + ans = 64'h41DFFFFFFFBFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3290286\n"); + end + ReadData1E = 64'h401FF80000000007; + ReadData2E = 64'hC000007FFF000000; + ReadData3E = 64'hB8071FDE35FADDCF; + ans = 64'hC02FF8FFBE008007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3291287\n"); + end + ReadData1E = 64'hBF1007FFFBFFFFFF; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000001007FFFC00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3292288\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h38150AAC0911CC7D; + ReadData3E = 64'h7FEFFFFFE0400000; + ans = 64'h7FEFFFFFE0400000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3293289\n"); + end + ReadData1E = 64'h3EBFFFFFF5FFFFFF; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h43DFFF8000000000; + ans = 64'h43DFFF8000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3294290\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'hB588000FFFFFFFFE; + ReadData3E = 64'h8010000000000001; + ans = 64'h8010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3295291\n"); + end + ReadData1E = 64'hBE7FFFFFFC0007FE; + ReadData2E = 64'h41FF219E20A95EC5; + ReadData3E = 64'h43FED67CDEA2B147; + ans = 64'h43FED67CDEA2B147; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3296292\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h0000000000000004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3297293\n"); + end + ReadData1E = 64'hA962DF1F379BF23E; + ReadData2E = 64'hC00000000001FE00; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3298294\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'hC01FFFFE00007FFF; + ans = 64'hC01FFFFE00007FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3299295\n"); + end + ReadData1E = 64'hC1EFFFFFFFF83FFE; + ReadData2E = 64'h801967CF84437796; + ReadData3E = 64'hC3D000000000080F; + ans = 64'hC3D000000000080F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3300296\n"); + end + ReadData1E = 64'hBFEEFFFFFFFFFFDF; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hC00CFFFFFFFFFFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3301297\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h475007FFFBFFFFFE; + ReadData3E = 64'h5BFD506B147C9FA5; + ans = 64'h5BFD506B147C9FA5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3302298\n"); + end + ReadData1E = 64'hBF9FFFFFFFFFFEF7; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hBFD1FFBFFFFFFFFF; + ans = 64'hBFE0FFDFFFFFFFBD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3303299\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h00234AFA3595B43B; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3304300\n"); + end + ReadData1E = 64'h7FF000FFFBFFFFFF; + ReadData2E = 64'h42BF7FC000000000; + ReadData3E = 64'hC34A2E7A5A4A83F6; + ans = 64'h7FF800FFFBFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3305301\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3306302\n"); + end + ReadData1E = 64'hBFCFFFFF7FFF7FFF; + ReadData2E = 64'hC7E00000DFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h47C000009FFFBC7E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3307303\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'hB80FFFF807FFFFFE; + ans = 64'hBFFFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3308304\n"); + end + ReadData1E = 64'h3CAFFDFFFFFFFFF7; + ReadData2E = 64'h43F497F8EC542873; + ReadData3E = 64'hC03530CBA64FFA4B; + ans = 64'h40B4817EA11F1330; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3309305\n"); + end + ReadData1E = 64'h3FC000800000001F; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'h7FC000800000001E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3310306\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h3FD3FFFFFFFBFFFF; + ReadData3E = 64'hC365C0383AD7D571; + ans = 64'hC365C0383AD7D571; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3311307\n"); + end + ReadData1E = 64'h41D08F5015BA7E6D; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h400FFFFFFFFFFFFC; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3312308\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h3FB604AF4FA22E07; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3313309\n"); + end + ReadData1E = 64'h37F00000100FFFFF; + ReadData2E = 64'h3EAF800200000000; + ReadData3E = 64'hC03BFFFFBFFFFFFF; + ans = 64'hC03BFFFFBFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3314310\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3315311\n"); + end + ReadData1E = 64'h40301F7FFFFFFFFE; + ReadData2E = 64'h8020000FFFBFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h805E3F203E7F03FA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3316312\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h304AD94B0473406B; + ans = 64'h304AD94B0473406B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3317313\n"); + end + ReadData1E = 64'h480EFFFFFFFFFFF7; + ReadData2E = 64'hC0000006FFFFFFFE; + ReadData3E = 64'h3FBFFFFE7FFFFFFE; + ans = 64'hC81F000D8FFFFFF3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3318314\n"); + end + ReadData1E = 64'h311FFFFFFFFFFF5F; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3319315\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h401FFFFE00000020; + ReadData3E = 64'hC0F2007FFFFFFFFF; + ans = 64'hC0F2007FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3320316\n"); + end + ReadData1E = 64'hB2B003FFDFFFFFFE; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'hBF007FFFFFBFFFFE; + ans = 64'hBF007FFFFFBFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3321317\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h0A8FFFEFFFFFFDFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3322318\n"); + end + ReadData1E = 64'h0020000007FFFFFB; + ReadData2E = 64'hC12B5B82F1E63F4C; + ReadData3E = 64'hC340000008800000; + ans = 64'hC340000008800000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3323319\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3324320\n"); + end + ReadData1E = 64'hB7E19CBC13F41F2E; + ReadData2E = 64'hEF9FF7FFFFF7FFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3325321\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hFFE00000003C0000; + ans = 64'hFFE00000003C0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3326322\n"); + end + ReadData1E = 64'hAF8FFFFF7FFFF800; + ReadData2E = 64'h43EF7098963E9581; + ReadData3E = 64'hC3D003FFFFFFFF80; + ans = 64'hC3D003FFFFFFFF80; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3327323\n"); + end + ReadData1E = 64'h3FDFD52A802DF001; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FE0156ABFE90800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3328324\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h3C4FFC0000FFFFFF; + ReadData3E = 64'h4017E730FD90AA17; + ans = 64'h4017E730FD90AA17; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3329325\n"); + end + ReadData1E = 64'hC1C1069E1C66263F; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hC02FE00000400000; + ans = 64'h41C1069E146E263F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3330326\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'hC020000400000000; + ReadData3E = 64'h0000000000000001; + ans = 64'h00400003FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3331327\n"); + end + ReadData1E = 64'hC1C0000820000000; + ReadData2E = 64'h7FEFFFFFFFF8001F; + ReadData3E = 64'h402000100000007F; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3332328\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h000FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3333329\n"); + end + ReadData1E = 64'h3F00000003FFFFFF; + ReadData2E = 64'hBFA0007FFFFFFFBE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC01000004002000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3334330\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'h41CFFFFFFDFFFFFE; + ans = 64'h41CFFFFFFDFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3335331\n"); + end + ReadData1E = 64'h3FD965E00C031CD6; + ReadData2E = 64'hC1E7FFFFFFFFFDFF; + ReadData3E = 64'hC0D00000001FFF7F; + ans = 64'hC1D30C7809025429; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3336332\n"); + end + ReadData1E = 64'hDFE00000800007FE; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h60000000800007FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3337333\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h3F5801FFFFFFFFFF; + ReadData3E = 64'hC80FFC0000100000; + ans = 64'hC80FFC0000100000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3338334\n"); + end + ReadData1E = 64'hC1F7960E95F76253; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h4000400002000000; + ans = 64'h4547960E95F76253; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3339335\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'hB7E64A32B97705D0; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3340336\n"); + end + ReadData1E = 64'h2A203FFFFFFFFFDF; + ReadData2E = 64'hFFFFFFFFFDFF7FFF; + ReadData3E = 64'h3FDCE847E2E43919; + ans = 64'hFFFFFFFFFDFF7FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3341337\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3342338\n"); + end + ReadData1E = 64'hC01FFFFEFFFFF000; + ReadData2E = 64'h4030001FFFFFFFF8; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC05FE03EFFFDEFF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3343339\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFE03FFE; + ans = 64'h7FEFFFFFFFE03FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3344340\n"); + end + ReadData1E = 64'h3FDFFFFFFFDFDFFE; + ReadData2E = 64'hC0A00000800001FF; + ReadData3E = 64'h47F4000FFFFFFFFF; + ans = 64'h47F4000FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3345341\n"); + end + ReadData1E = 64'h00100000007FDFFF; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3346342\n"); + end + ReadData1E = 64'h800FFFFFFFFFFFFE; + ReadData2E = 64'h4800000000000003; + ReadData3E = 64'hC05FE0FFFFFFFFFF; + ans = 64'hC05FE0FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3347343\n"); + end + ReadData1E = 64'hC0FC001FFFFFFFFF; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'hFFEFFFFFFFFAFFFF; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3348344\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h3FE0000100010000; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3349345\n"); + end + ReadData1E = 64'h43EEFF7FFFFFFFFE; + ReadData2E = 64'hC1F01FFFFFDFFFFE; + ReadData3E = 64'hA4BDACA006B8F71B; + ans = 64'hC5EF3D7EFFC200FA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3350346\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3351347\n"); + end + ReadData1E = 64'hC80FFC0000400000; + ReadData2E = 64'hC3F130A8A681E374; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h4C112E82918F7489; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3352348\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h381FFFFF000000FF; + ans = 64'h381FFFFF000000FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3353349\n"); + end + ReadData1E = 64'hB7F007FFFFFFF7FE; + ReadData2E = 64'h418F7FFFFFFFFFFD; + ReadData3E = 64'hC34F003FFFFFFFFE; + ans = 64'hC34F003FFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3354350\n"); + end + ReadData1E = 64'h2AAFFFFFBFFFFF00; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3355351\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'hBFB001000007FFFF; + ReadData3E = 64'h002FFFFEFFFFDFFE; + ans = 64'h0030400380000FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3356352\n"); + end + ReadData1E = 64'h5E6FFFFFFFFBFDFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'hFFDFFFFFF80001FF; + ans = 64'hFFDFFFFFF80001FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3357353\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h4030A0D41D1FB2FC; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3358354\n"); + end + ReadData1E = 64'h404A15DC4DCCD514; + ReadData2E = 64'h401DD04624B45C1C; + ReadData3E = 64'hC00FFFFFFF9FFFFF; + ans = 64'h40780D96EC399C98; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3359355\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3360356\n"); + end + ReadData1E = 64'h393FFFFFFE0000FE; + ReadData2E = 64'h1D20000000000F7F; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3361357\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'hC3FFFF001FFFFFFF; + ans = 64'hC3FFFF001FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3362358\n"); + end + ReadData1E = 64'h3FCF00000FFFFFFE; + ReadData2E = 64'hC02000000207FFFE; + ReadData3E = 64'h80033D50B013519C; + ans = 64'hBFFF000013EF7FFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3363359\n"); + end + ReadData1E = 64'hC3DFFFF00000003E; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hC3DFFFF00000003C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3364360\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'hC00000003DFFFFFF; + ReadData3E = 64'hBE6EFFFFFFFFDFFF; + ans = 64'hBE6EFFFFFFFFDFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3365361\n"); + end + ReadData1E = 64'h40A00800000007FF; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'hBFD0000080001FFF; + ans = 64'h40B007BFFFFE07FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3366362\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h80007FFFFFFFFFFB; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3367363\n"); + end + ReadData1E = 64'hC000000000040080; + ReadData2E = 64'hD28F4962658728DB; + ReadData3E = 64'h3AD264C990693089; + ans = 64'h529F4962658EFC2E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3368364\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3369365\n"); + end + ReadData1E = 64'h3D8DFFE000000000; + ReadData2E = 64'h25DFFDFFFFFFF7FF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3370366\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'hC1C000000010003F; + ans = 64'hC1C000000010003F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3371367\n"); + end + ReadData1E = 64'h37E000000200003E; + ReadData2E = 64'h00100000100FFFFE; + ReadData3E = 64'h43EFFEFFFFFFBFFF; + ans = 64'h43EFFEFFFFFFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3372368\n"); + end + ReadData1E = 64'hBFAEE9E6C4F46427; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h0010000000000000; + ans = 64'hBFDEE9E6C4F46425; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3373369\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'hBFCFFFFFFFFFFF80; + ReadData3E = 64'hB7FFFEF000000000; + ans = 64'hB7FFFEF000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3374370\n"); + end + ReadData1E = 64'hC3EF0000000FFFFF; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h875538053E945234; + ans = 64'hC73F000000100001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3375371\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h3FB6DA2872BC5B52; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3376372\n"); + end + ReadData1E = 64'hC0003FC000000000; + ReadData2E = 64'h002000400FFFFFFF; + ReadData3E = 64'h320D953014E822FC; + ans = 64'h320D953014E822FC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3377373\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4017FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3378374\n"); + end + ReadData1E = 64'h3CAFFFFFFFC0003E; + ReadData2E = 64'hC3DFF0000000FFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC09FEFFFFFC1203D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3379375\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hBC7FFFFFFFBFEFFF; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3380376\n"); + end + ReadData1E = 64'hB81010000000003F; + ReadData2E = 64'h4020CF9C7AE275BF; + ReadData3E = 64'h43FFFFCFFFFFFFFF; + ans = 64'h43FFFFCFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3381377\n"); + end + ReadData1E = 64'hC02FFFFFFFFBFFFC; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3382378\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h96F03FFFFFFFFFFF; + ReadData3E = 64'hC1DFFFFFFF7FFEFF; + ans = 64'hC1DFFFFFFF7FFEFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3383379\n"); + end + ReadData1E = 64'hC0300000000021FF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'hBFF7986A95EC5569; + ans = 64'hBFF7986A95EC5569; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3384380\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h403FFFFE000001FF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3385381\n"); + end + ReadData1E = 64'h3ADFDFFFC0000000; + ReadData2E = 64'h3FB001000000007F; + ReadData3E = 64'h40E0FFFFFFBFFFFF; + ans = 64'h40E0FFFFFFBFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3386382\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3387383\n"); + end + ReadData1E = 64'h2EFFFFFF80003FFE; + ReadData2E = 64'h401DC0210CFC0082; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3388384\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'hC12F8007FFFFFFFF; + ans = 64'hC12F8007FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3389385\n"); + end + ReadData1E = 64'h43D269DDE513D830; + ReadData2E = 64'h4540001000000010; + ReadData3E = 64'hC00FFFFDEFFFFFFF; + ans = 64'h492269F04EF1BD56; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3390386\n"); + end + ReadData1E = 64'hD29A7B5148343873; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'h4F4A7B5148343875; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3391387\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'hBFE0100000007FFE; + ReadData3E = 64'hC3FFFFFFFFFFFEEE; + ans = 64'hC3FFFFFFFFFFFEEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3392388\n"); + end + ReadData1E = 64'hC0323BE0D28F2563; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'hA250CB341584CB74; + ans = 64'h40123BE0D28F2563; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3393389\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h436000000000003F; + ReadData3E = 64'h8010000000000001; + ans = 64'h838000000000003F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3394390\n"); + end + ReadData1E = 64'h4800800100000000; + ReadData2E = 64'h434D7D1630C091E8; + ReadData3E = 64'h43CFFFC0000003FE; + ans = 64'h4B5E6900BA17F983; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3395391\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h0023FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3396392\n"); + end + ReadData1E = 64'hA0800400000FFFFF; + ReadData2E = 64'h56C09305633C9D7F; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3397393\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'hBFDB18EB4FEC12A2; + ans = 64'hBFDB18EB4FEC12A2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3398394\n"); + end + ReadData1E = 64'h3FBFFFC000000400; + ReadData2E = 64'h3FF4603C633AEF90; + ReadData3E = 64'hC3F20D7AAD2AF500; + ans = 64'hC3F20D7AAD2AF500; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3399395\n"); + end + ReadData1E = 64'h2D88079BCFD6E5D3; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3400396\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'hC3E0040004000000; + ReadData3E = 64'h8025D2EB3974CD7E; + ans = 64'h0400040004000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3401397\n"); + end + ReadData1E = 64'hC80FFFFFFFC08000; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h7FDFF800000003FF; + ans = 64'h7FDFF800000003FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3402398\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'hC01FFDFFFFFFE000; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3403399\n"); + end + ReadData1E = 64'h4B400400001FFFFF; + ReadData2E = 64'h434FFFFFF0FFFFFF; + ReadData3E = 64'h802FFFC0001FFFFF; + ans = 64'h4EA003FFF89E1FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3404400\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3405401\n"); + end + ReadData1E = 64'hC3EFFFFFFDF7FFFE; + ReadData2E = 64'hB67000010000FFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3406402\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h43C00003DFFFFFFF; + ans = 64'h43C00003DFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3407403\n"); + end + ReadData1E = 64'h9339BB724A694619; + ReadData2E = 64'h00000001FFFDFFFF; + ReadData3E = 64'hC3F00000001FFFFE; + ans = 64'hC3F00000001FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3408404\n"); + end + ReadData1E = 64'h4014E5E82CE3564E; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'hC364E5E82CE3564E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3409405\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'hC027859127FF7305; + ReadData3E = 64'hBCAAB99A954486D7; + ans = 64'hBCAAB99A954486D7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3410406\n"); + end + ReadData1E = 64'h43E0003FEFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h800B8203EBFDEC12; + ans = 64'hC740003FEFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3411407\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'h4030000000000076; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3412408\n"); + end + ReadData1E = 64'hBFE0000000801FFF; + ReadData2E = 64'h8010008000040000; + ReadData3E = 64'hC1DC000000FFFFFF; + ans = 64'hC1DC000000FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3413409\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h3CC0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3414410\n"); + end + ReadData1E = 64'h3408000007FFFFFE; + ReadData2E = 64'h407808FFF17E629F; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h349206BFFB2109F2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3415411\n"); + end + ReadData1E = 64'h8010000000000000; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'hC7FE066F1502F098; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3416412\n"); + end + ReadData1E = 64'hB86FFFFFFFFFF002; + ReadData2E = 64'h400FFF7FF7FFFFFF; + ReadData3E = 64'h43DDB85250CAA8CD; + ans = 64'h43DDB85250CAA8CD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3417413\n"); + end + ReadData1E = 64'h3FC9A787603BE940; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'hC340000000000000; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3418414\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hB7EFFFC000000100; + ReadData3E = 64'hBFA02000000001FF; + ans = 64'hBFA02000000001FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3419415\n"); + end + ReadData1E = 64'h3FBF800000003FFE; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'hC8FFFFF000000040; + ans = 64'hC8FFFFF000000040; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3420416\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h403000000000200E; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3421417\n"); + end + ReadData1E = 64'h800A51B3E571783B; + ReadData2E = 64'hC09FFFFFF800FFFF; + ReadData3E = 64'hC27E72799E3AC0F6; + ans = 64'hC27E72799E3AC0F6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3422418\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3423419\n"); + end + ReadData1E = 64'h89600000001FFFF6; + ReadData2E = 64'h3E800000400001FF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3424420\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'hC03FFFFFFFFF7BFF; + ans = 64'hC03FFFFFFFFF7BFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3425421\n"); + end + ReadData1E = 64'h3FCFFEFFFFFE0000; + ReadData2E = 64'hBFC00007FFFFDFFF; + ReadData3E = 64'h802FFFFFFE7FFFFE; + ans = 64'hBF9FFF0FFF7DBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3426422\n"); + end + ReadData1E = 64'hBCADE3212765381A; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3427423\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hBFB200FFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFF803E; + ans = 64'h800EDFEFFFFF803E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3428424\n"); + end + ReadData1E = 64'h8028D0DE78133823; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h41CFDFFFFFBFFFFF; + ans = 64'h41CFDFFFFFBFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3429425\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hBFE00000080001FE; + ReadData3E = 64'h0000000000000001; + ans = 64'h0008000004000101; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3430426\n"); + end + ReadData1E = 64'hBFCFFFFFFC000007; + ReadData2E = 64'hD8900007EFFFFFFF; + ReadData3E = 64'h401A2FEED27D317B; + ans = 64'h58700007EDFFFF05; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3431427\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h8017FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3432428\n"); + end + ReadData1E = 64'h3810000003FFFFF7; + ReadData2E = 64'h49EA1606742C912F; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h420A16067A9212BD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3433429\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h40DFFF7FFFC00000; + ans = 64'h40DFFF7FFFC00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3434430\n"); + end + ReadData1E = 64'hC2C4000000008000; + ReadData2E = 64'h3C26CBC1CE557504; + ReadData3E = 64'hC3EFBFFFFFFFFFF0; + ans = 64'hC3EFBFFFFFFFFFF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3435431\n"); + end + ReadData1E = 64'h3E3B1AA588F3BAFB; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h3E4B1AA584F3BAFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3436432\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hA6CFFFFFFFFFFBFE; + ReadData3E = 64'hBFC00017FFFFFFFE; + ans = 64'hBFC00017FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3437433\n"); + end + ReadData1E = 64'hC02000000000003C; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'hC7FDFFDFFFFFFFFF; + ans = 64'hC7FDFFDFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3438434\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hC975A307437AF85B; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3439435\n"); + end + ReadData1E = 64'h000FFFFFFFFFF7BF; + ReadData2E = 64'h4003FE0000000000; + ReadData3E = 64'hCC6000003FFEFFFE; + ans = 64'hCC6000003FFEFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3440436\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3441437\n"); + end + ReadData1E = 64'h3FF0000100000000; + ReadData2E = 64'hC00000003FFFFBFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hBFF800027FFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3442438\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h47EFFFF01FFFFFFE; + ans = 64'h47EFFFF01FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3443439\n"); + end + ReadData1E = 64'hC03FFFFFFFFFEFE0; + ReadData2E = 64'h40E0000000011FFF; + ReadData3E = 64'h7FDFFEFFFFFDFFFE; + ans = 64'h7FDFFEFFFFFDFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3444440\n"); + end + ReadData1E = 64'h9E8FFFFE0007FFFE; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3445441\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h80000007FFFFFDFF; + ReadData3E = 64'h4003FFFFFEFFFFFF; + ans = 64'h4003FFFFFEFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3446442\n"); + end + ReadData1E = 64'h37F4BAE79E6F948B; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h53BDFFFFFDFFFFFF; + ans = 64'h77E4BAE79E6F948B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3447443\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hBFF10000FFFFFFFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3448444\n"); + end + ReadData1E = 64'h3924FB40F5022969; + ReadData2E = 64'h8019A7601593A4B3; + ReadData3E = 64'h3CBEFD65B6DFB8A5; + ans = 64'h3CBEFD65B6DFB8A5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3449445\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3450446\n"); + end + ReadData1E = 64'h75EFFFFFE07FFFFE; + ReadData2E = 64'h8B4EFFFFFFFFFFBE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC14EFFFFE17BFFBC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3451447\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'hD89000009FFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3452448\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFD000; + ReadData2E = 64'hC01DB9E4D4F2524D; + ReadData3E = 64'h7FD020007FFFFFFF; + ans = 64'h7FD020007FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3453449\n"); + end + ReadData1E = 64'h37F080000001FFFE; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3454450\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h3FDFFFFFFF0001FF; + ReadData3E = 64'hBFBFFFFFFFDFFFEE; + ans = 64'hBFBFFFFFFFDFFFEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3455451\n"); + end + ReadData1E = 64'hC02FFFFFFFFFFDFF; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h47F00010000003FF; + ans = 64'h47F00010000003FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3456452\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h3FDFFFFFFC000100; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3457453\n"); + end + ReadData1E = 64'h5501DAD29332DBC7; + ReadData2E = 64'hC0010007FFFFFFFE; + ReadData3E = 64'hA3AFFBFFFF7FFFFF; + ans = 64'hD512F888A9CF531B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3458454\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3459455\n"); + end + ReadData1E = 64'h34AFFFFFFFF40000; + ReadData2E = 64'h8020003FF8000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3460456\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h675FFFF8001FFFFF; + ans = 64'h675FFFF8001FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3461457\n"); + end + ReadData1E = 64'hB7EF8007FFFFFFFF; + ReadData2E = 64'hB470000107FFFFFF; + ReadData3E = 64'hC030000100000FFE; + ans = 64'hC030000100000FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3462458\n"); + end + ReadData1E = 64'hC01FFFC03FFFFFFF; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h3FF7FFC03FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3463459\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h7FEFF80000000001; + ReadData3E = 64'hC00C5B8EAC679B8F; + ans = 64'hC01E29C75633CDC9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3464460\n"); + end + ReadData1E = 64'h3B4DF80000000000; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hA5D0040000000008; + ans = 64'hBB3DF7FFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3465461\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h3FB000003F800000; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3466462\n"); + end + ReadData1E = 64'h20D0000000017FFE; + ReadData2E = 64'hB80FFFFFFFCFFFFE; + ReadData3E = 64'h3A0DC2F26B598257; + ans = 64'h3A0DC2F26B598257; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3467463\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3468464\n"); + end + ReadData1E = 64'h48000007FFFFF7FE; + ReadData2E = 64'h43D0080007FFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4BE008080BFFFBF9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3469465\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'hC01209D418D0E060; + ans = 64'hC01209D418D0E060; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3470466\n"); + end + ReadData1E = 64'hBFD4BB46D5E2F646; + ReadData2E = 64'hC800000000000027; + ReadData3E = 64'hAA3000000001FFBF; + ans = 64'h47E4BB46D5E2F679; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3471467\n"); + end + ReadData1E = 64'h41DB6D22A2BB0DDE; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h0010000000000000; + ans = 64'hC1EB6D22A2BB0DDE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3472468\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'h3DA0003FFFFFFFFE; + ReadData3E = 64'h47FFFFFFFFC00003; + ans = 64'h47FFFFFFFFC00003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3473469\n"); + end + ReadData1E = 64'h3FD10000000003FF; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h41CD40882EF6D2FB; + ans = 64'h41CD40882E6ED2FB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3474470\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hB7EBCE48844DA9FF; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3475471\n"); + end + ReadData1E = 64'h413000000000001C; + ReadData2E = 64'h37E2000FFFFFFFFF; + ReadData3E = 64'h3EBFFFFFFFFF807F; + ans = 64'h3EBFFFFFFFFF807F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3476472\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3477473\n"); + end + ReadData1E = 64'h3FCFFFFFFFFFFC02; + ReadData2E = 64'h480FBFFFFFFFBFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h47EFBFFFFFFFBC09; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3478474\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h0020080000000002; + ans = 64'h0360000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3479475\n"); + end + ReadData1E = 64'h3FEFFE8000000000; + ReadData2E = 64'hFFEFF00000000FFF; + ReadData3E = 64'h403FFFFFFFEFFFF7; + ans = 64'hFFEFEE80C0000FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3480476\n"); + end + ReadData1E = 64'h000FFFFFFFFFF3FF; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3481477\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hC02F0000FFFFFFFF; + ReadData3E = 64'h82A008000000000F; + ans = 64'h82A007FFFFFF840F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3482478\n"); + end + ReadData1E = 64'h97D2890D9BD28050; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h002FFFFFF9000000; + ans = 64'h57C2890D9BD28051; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3483479\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hC3FFFFFFFDF7FFFE; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3484480\n"); + end + ReadData1E = 64'h800FFFFFF83FFFFF; + ReadData2E = 64'h3FD00007FFFFFFFC; + ReadData3E = 64'h3FE0000200000FFF; + ans = 64'h3FE0000200000FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3485481\n"); + end + ReadData1E = 64'h8010000000000001; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3486482\n"); + end + ReadData1E = 64'hB80DC00000000000; + ReadData2E = 64'hBF8201C2804DCB24; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3487483\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h48000007FFFFFDFF; + ans = 64'h48000007FFFFFDFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3488484\n"); + end + ReadData1E = 64'hC3D001FFFFFFFFBE; + ReadData2E = 64'h43DFFFFFFFFF7FFA; + ReadData3E = 64'hBFF020003FFFFFFF; + ans = 64'hC7C001FFFFFFBFB3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3489485\n"); + end + ReadData1E = 64'hC0E00FFEFFFFFFFF; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3490486\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'hBCCFFFFFFFF7C000; + ReadData3E = 64'h000800000000000F; + ans = 64'h0008000000000017; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3491487\n"); + end + ReadData1E = 64'hBFBFDFFFFFBFFFFF; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h4A53FFFFFFFFBFFF; + ans = 64'h4A53FFFFFFFFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3492488\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'hC1DD8627F814CC9D; + ReadData3E = 64'h8010000000000001; + ans = 64'h020D8627F7F4CC9C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3493489\n"); + end + ReadData1E = 64'hC3CEFFFFFFFDFFFF; + ReadData2E = 64'h46E0400004000000; + ReadData3E = 64'h402FFFFFFC01FFFE; + ans = 64'hCABF7C0007BDF7FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3494490\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h001FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3495491\n"); + end + ReadData1E = 64'h3EDFFDFFFFBFFFFF; + ReadData2E = 64'h47FA7D6988D5DD43; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h46EA7BC1B2085511; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3496492\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h41EA07D62A81BE53; + ans = 64'h41EA07D62A81BE53; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3497493\n"); + end + ReadData1E = 64'hC02F01FFFFFFFFFE; + ReadData2E = 64'hC058000000000FFF; + ReadData3E = 64'h406000000003FFBF; + ans = 64'h4099418000008F76; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3498494\n"); + end + ReadData1E = 64'hDC2FFFB7FFFFFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hDC1FFFB7FFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3499495\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h001FFC000000000F; + ReadData3E = 64'h40DFC00100000000; + ans = 64'h40DFC00100000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3500496\n"); + end + ReadData1E = 64'hBF46FFCF96810B6E; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hC3ED9460122A3395; + ans = 64'hC3ED9460122A3395; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3501497\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h3FC0000A00000000; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3502498\n"); + end + ReadData1E = 64'h430000000000800F; + ReadData2E = 64'hC34000003FFFFFFE; + ReadData3E = 64'h0FBFDFFFFFFFFFE0; + ans = 64'hC65000004000800D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3503499\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3504500\n"); + end + ReadData1E = 64'hC47FFFFFEFFFFFF7; + ReadData2E = 64'hC32FFFFFFFFC4000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h47BFFFFFEFFC3FF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3505501\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h43FFFFFFFFBFFDFF; + ans = 64'h43FFFFFFFFBFFDFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3506502\n"); + end + ReadData1E = 64'h00100000FFFFFFFD; + ReadData2E = 64'h402FFFFFFBFFF7FE; + ReadData3E = 64'hA62FFFFFFFD80000; + ans = 64'hA62FFFFFFFD80000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3507503\n"); + end + ReadData1E = 64'h80099028AA8BC39E; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h8000000000000000; + ans = 64'h801320515517873D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3508504\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'hBB00007FF0000000; + ReadData3E = 64'hB800003FFFFFFDFF; + ans = 64'hB800003FFFFFFDFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3509505\n"); + end + ReadData1E = 64'hBFD8E1AD6B807737; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'hC1DFFFFFFFF9FFFF; + ans = 64'hC1E00000002EC35A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3510506\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h800F800100000000; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3511507\n"); + end + ReadData1E = 64'h41DFFC0001FFFFFF; + ReadData2E = 64'h4047FFFFFFFF7FFF; + ReadData3E = 64'h3DD0100003FFFFFF; + ans = 64'h4237FD00017F800E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3512508\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3513509\n"); + end + ReadData1E = 64'hC3DFFFFFFFF00000; + ReadData2E = 64'hB1E1FFFFFFF00000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h35D1FFFFFFE70000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3514510\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h400003FFFFFDFFFE; + ans = 64'h400003FFFFFDFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3515511\n"); + end + ReadData1E = 64'hBFFFFFFEFFFFFDFE; + ReadData2E = 64'h47EFFFE0000000FE; + ReadData3E = 64'hBFCFFFEFFFFFFFFC; + ans = 64'hC7FFFFDF0000FEFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3516512\n"); + end + ReadData1E = 64'h0C2FFFFFFFFFF81F; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'hC340000000000000; + ans = 64'h4C1FFFFFFFFFF81F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3517513\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'hC03FFFFFFFDFFFEF; + ReadData3E = 64'hC69FFFFFFFC0003E; + ans = 64'hC69FFFFFFFC0003E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3518514\n"); + end + ReadData1E = 64'hC1CD41643238B450; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h3F4012189596A55A; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3519515\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'hC1E000001FFFFFFE; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3520516\n"); + end + ReadData1E = 64'hC1D63F4CD09CF17D; + ReadData2E = 64'h800386653AE94E7E; + ReadData3E = 64'hC0000000001000FF; + ans = 64'hC0000000001000FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3521517\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3522518\n"); + end + ReadData1E = 64'hC080000023FFFFFF; + ReadData2E = 64'hA85FFFFF8000003E; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3523519\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h000002FFFFFFFFFF; + ans = 64'h000002FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3524520\n"); + end + ReadData1E = 64'h480E746204B0DF35; + ReadData2E = 64'hC02204CCBC5CD31F; + ReadData3E = 64'hEAAAA3228E81016A; + ans = 64'hEAAAA3228E81016A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3525521\n"); + end + ReadData1E = 64'h4717170806B26DF2; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3526522\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'hC1DFFFFFFFC001FF; + ReadData3E = 64'hC100000005FFFFFF; + ans = 64'hC100000005FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3527523\n"); + end + ReadData1E = 64'h3FD00201FFFFFFFF; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h43CFFFF3FFFFFFFF; + ans = 64'h43CFFFF3FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3528524\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h38000007FFFFC000; + ReadData3E = 64'h0000000000000001; + ans = 64'h0000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3529525\n"); + end + ReadData1E = 64'h434FFFFFBFFFFDFF; + ReadData2E = 64'h742FFDF800000000; + ReadData3E = 64'h407F000000000003; + ans = 64'h778FFDF7C0040DFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3530526\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h800FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3531527\n"); + end + ReadData1E = 64'h7FFAA739032308BE; + ReadData2E = 64'hBF0E85F66FF9A590; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h7FFAA739032308BE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3532528\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'hC0AFFFF00007FFFF; + ans = 64'hC0AFFFF00007FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3533529\n"); + end + ReadData1E = 64'hC3EFFFE01FFFFFFE; + ReadData2E = 64'hC1F000000000400F; + ReadData3E = 64'hC1E208A5AF810876; + ans = 64'h45EFFFE02000801C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3534530\n"); + end + ReadData1E = 64'h410FFFFFBFFC0000; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hC0FFFFFFBFFBFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3535531\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFE00100000; + ReadData3E = 64'hD0F003FFFFFFFF7F; + ans = 64'hD0F003FFFFFFFF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3536532\n"); + end + ReadData1E = 64'hF1400007FFDFFFFF; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'hC340000007F7FFFF; + ans = 64'h71400007FFDFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3537533\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h41F00000200007FE; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3538534\n"); + end + ReadData1E = 64'h5E7000FFFFFFFFFC; + ReadData2E = 64'hC01FFFF7FFFFFFBF; + ReadData3E = 64'hC3DFFC630E8FD8FA; + ans = 64'hDEA000FBFFBFFFDB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3539535\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3540536\n"); + end + ReadData1E = 64'hC52C42E66BCCAFB1; + ReadData2E = 64'hBE4CD9F65F78AADF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h43897B08DF7AA850; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3541537\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'hC7F26B35B3BEEDF4; + ans = 64'hC7F26B35B3BEEDF4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3542538\n"); + end + ReadData1E = 64'hBFBFFFFFFFEFFDFE; + ReadData2E = 64'h3CA000000003FBFF; + ReadData3E = 64'h7FF000000000FFFE; + ans = 64'h7FF800000000FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3543539\n"); + end + ReadData1E = 64'h4030400000008000; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3544540\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'hBFF000001FFFFBFF; + ReadData3E = 64'h406BB44D0A226076; + ans = 64'h406BB44D0A226076; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3545541\n"); + end + ReadData1E = 64'hB93C93AA6764019C; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'hC84566F5D37396A8; + ans = 64'hC84566F5D37396A8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3546542\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'hC1E88330A8B2BEDC; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3547543\n"); + end + ReadData1E = 64'h342C89D4D2188302; + ReadData2E = 64'h3F2783FEAF3CCC7C; + ReadData3E = 64'hC1DFFFFFFEDFFFFF; + ans = 64'hC1DFFFFFFEDFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3548544\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3549545\n"); + end + ReadData1E = 64'hC1F88E773DEE668E; + ReadData2E = 64'hB7EFFFFFFFFC0080; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h39F88E773DEB5521; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3550546\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'hB7EFFFFF3FFFFFFF; + ans = 64'hB7EFFFFF3FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3551547\n"); + end + ReadData1E = 64'hC80EA7921C438451; + ReadData2E = 64'h7FE008000000007E; + ReadData3E = 64'h424153696DC450D3; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3552548\n"); + end + ReadData1E = 64'h4F000FFFFFFFFFFF; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3553549\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h3FE5D076256340C0; + ReadData3E = 64'h381FFFFFFFFFFDF0; + ans = 64'h381FFFFFFFFFFDF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3554550\n"); + end + ReadData1E = 64'h4098D20DC49B8DC4; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h802FFFF80000001E; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3555551\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFF; + ReadData2E = 64'h3FFFFFC000001FFF; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3556552\n"); + end + ReadData1E = 64'h3FFFFFFFFFBFFF7F; + ReadData2E = 64'h403004FFFFFFFFFF; + ReadData3E = 64'hBFDFE10000000000; + ans = 64'h403F8A7BFFBFEB7D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3557553\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3558554\n"); + end + ReadData1E = 64'h4347363011539C16; + ReadData2E = 64'h381800001FFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3559555\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'hC3FFB0AB8D74591F; + ans = 64'hC3FFB0AB8D74591F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3560556\n"); + end + ReadData1E = 64'hBCA9523494DF68A5; + ReadData2E = 64'hBFD0EDC877598C46; + ReadData3E = 64'h3FB00000FFFFBFFE; + ans = 64'h3FB00000FFFFC001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3561557\n"); + end + ReadData1E = 64'h41C0040000000FFE; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3562558\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hB8121FFFFFFFFFFF; + ReadData3E = 64'hC04FFFFFFC00FFFF; + ans = 64'hC04FFFFFFC00FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3563559\n"); + end + ReadData1E = 64'hBD3D85FEA9218660; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h002FFFFDC0000000; + ans = 64'hB9ED85FEA9218660; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3564560\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hC03260D7A92FBDAC; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3565561\n"); + end + ReadData1E = 64'h7FD00003FC000000; + ReadData2E = 64'h7FEFFDFFFFFFFFF8; + ReadData3E = 64'hFFF0E80000C2E530; + ans = 64'hFFF8E80000C2E530; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3566562\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3567563\n"); + end + ReadData1E = 64'h4070020000002000; + ReadData2E = 64'h66FC0000000003FE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h677C038000003BFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3568564\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h3FCFFE0000000000; + ans = 64'h3FCFFE0000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3569565\n"); + end + ReadData1E = 64'hB7FFDFFFBFFFFFFE; + ReadData2E = 64'h41E200000000000E; + ReadData3E = 64'h43EFFFFFFF7FF000; + ans = 64'h43EFFFFFFF7FF000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3570566\n"); + end + ReadData1E = 64'h3FE6AAFA7E792414; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'h3FD6AAFA7E792415; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3571567\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h3FDDFFFFFF800000; + ReadData3E = 64'hBCBFFFFFF807FFFF; + ans = 64'hBCBFFFFFF807FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3572568\n"); + end + ReadData1E = 64'h401FFFFFFFF00040; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000010003; + ans = 64'hFFF8000000010003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3573569\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hC3EFDFFFDFFFFFFF; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3574570\n"); + end + ReadData1E = 64'h38207FFFFFFDFFFF; + ReadData2E = 64'hBFB0103FFFFFFFFF; + ReadData3E = 64'hBFE000FFFFFFFFFF; + ans = 64'hBFE000FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3575571\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3576572\n"); + end + ReadData1E = 64'hB5FB26C690832C47; + ReadData2E = 64'hBA5010000000000E; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3577573\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h3FDB9A90D4E1CF5D; + ans = 64'h3FDB9A90D4E1CF5D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3578574\n"); + end + ReadData1E = 64'hBFC000020000000F; + ReadData2E = 64'h3FEF000000000002; + ReadData3E = 64'hC0200000000003DE; + ans = 64'hC0203E0007C003DE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3579575\n"); + end + ReadData1E = 64'hA464080000000000; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3580576\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hBFBFFFFFFDFFFDFF; + ReadData3E = 64'hC34157FA2A9C1C14; + ans = 64'hC34157FA2A9C1C14; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3581577\n"); + end + ReadData1E = 64'h38003FFFFFFFEFFF; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h3CAFFDFFFFFFDFFF; + ans = 64'h3CAFFDFFFFFFDFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3582578\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hBFB9E7540B9C7C2A; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3583579\n"); + end + ReadData1E = 64'h930FFFFDEFFFFFFF; + ReadData2E = 64'h8010000000003FEF; + ReadData3E = 64'hC1DFFFFF8000003E; + ans = 64'hC1DFFFFF8000003E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3584580\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3585581\n"); + end + ReadData1E = 64'h37E8F354D2659276; + ReadData2E = 64'h402FEEFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3586582\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hBE9B95273DF7817D; + ans = 64'hC01000001B95273E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3587583\n"); + end + ReadData1E = 64'hC0E5D5B0B2CA3D5E; + ReadData2E = 64'hBEDF00000007FFFF; + ReadData3E = 64'h380FFFFFF3FFFFFF; + ans = 64'h3FD527032D3960DF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3588584\n"); + end + ReadData1E = 64'h5462700D7C3DAD89; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3589585\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h3FBFF000FFFFFFFF; + ReadData3E = 64'hB81FFFDFFFFFFFFA; + ans = 64'hB81FFFDFFFFFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3590586\n"); + end + ReadData1E = 64'h000FFFFFF000000E; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'hC00608FDAC66D251; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3591587\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hC54FFEC000000000; + ReadData3E = 64'h8010000000000001; + ans = 64'h057FFEBFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3592588\n"); + end + ReadData1E = 64'h371FFFFE000003FF; + ReadData2E = 64'hFFF3CA66C5270FA6; + ReadData3E = 64'h801FFFFFF0FFFFFF; + ans = 64'hFFFBCA66C5270FA6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3593589\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h001FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3594590\n"); + end + ReadData1E = 64'hD9CFDFFFBFFFFFFF; + ReadData2E = 64'hB800000000000FFA; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h51DFDFFFC0001FD3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3595591\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'hC3FFFFFFFDFFFF80; + ans = 64'hC3FFFFFFFDFFFF80; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3596592\n"); + end + ReadData1E = 64'hC99FFFFFFC07FFFE; + ReadData2E = 64'h40301FEFFFFFFFFF; + ReadData3E = 64'h26401FFFFFFFFBFE; + ans = 64'hC9E01FEFFE0009FA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3597593\n"); + end + ReadData1E = 64'h420FFFFFC0000040; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3598594\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hC1EFFF0000000200; + ReadData3E = 64'h802FFFFEFFFFFE00; + ans = 64'h021FFEFFFFC00200; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3599595\n"); + end + ReadData1E = 64'h40C0000002000FFE; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h41DFEFFFFFFFFFFF; + ans = 64'h41DFEFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3600596\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h356FFFF7C0000000; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3601597\n"); + end + ReadData1E = 64'h801FFFFBFFFBFFFF; + ReadData2E = 64'hC8797919078CC5B2; + ReadData3E = 64'h40DB92EB1B062F28; + ans = 64'h40DB92EB1B062F28; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3602598\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3603599\n"); + end + ReadData1E = 64'hC1EB84A6B86E27BF; + ReadData2E = 64'h56FFFFFFFC0003FF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hD8FB84A6B4FD9658; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3604600\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hA29FFE000000FFFF; + ans = 64'hA29FFE000000FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3605601\n"); + end + ReadData1E = 64'hC05FFFFFFFFDFFFE; + ReadData2E = 64'hFFE03FFFFFBFFFFE; + ReadData3E = 64'hFFE1000000001000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3606602\n"); + end + ReadData1E = 64'h3E8A1C0DF8D28AB3; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'hBE8A1C0DF8D28AB2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3607603\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hC8C000020001FFFF; + ReadData3E = 64'h801E00000FFFFFFF; + ans = 64'h08F000020001FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3608604\n"); + end + ReadData1E = 64'h401EB33D504D630D; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h2480000000010003; + ans = 64'hC01EB33D504D630F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3609605\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hBF9FFFFF7FC00000; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3610606\n"); + end + ReadData1E = 64'hC00FFFDFFFFFFBFF; + ReadData2E = 64'h43EFFFFFFFFE0080; + ReadData3E = 64'hBF8B000000000000; + ans = 64'hC40FFFDFFFFDFC81; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3611607\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3612608\n"); + end + ReadData1E = 64'h43F0008000FFFFFF; + ReadData2E = 64'h002ED056267DDDD2; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h042ED14CAB1C1721; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3613609\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hB80922446397B49D; + ans = 64'hB80922446397B49D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3614610\n"); + end + ReadData1E = 64'h000FFFFFFFFFF400; + ReadData2E = 64'hD55FFFFFFFFFFFF2; + ReadData3E = 64'h0F90000003FFEFFF; + ans = 64'h957FFFFFFFFFE7F2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3615611\n"); + end + ReadData1E = 64'hC03000FFFFFFEFFF; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'hC33FFFFFFFFFFFC0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3616612\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h0010007FFEFFFFFF; + ReadData3E = 64'h3FD0000008002000; + ans = 64'h3FD0000008002000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3617613\n"); + end + ReadData1E = 64'h3CAF00FFFFFFFFFF; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h47EFF3FFFFFFFFFF; + ans = 64'h47EFF3FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3618614\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'h401000001FFFFFF0; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3619615\n"); + end + ReadData1E = 64'hBCAFFFFEFF000000; + ReadData2E = 64'hC3DFFFFFFFFFC00E; + ReadData3E = 64'h402EFFFC00000000; + ans = 64'h40A01EFF7B7FE007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3620616\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h4011FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3621617\n"); + end + ReadData1E = 64'hBF8FE00000000008; + ReadData2E = 64'h0020101FFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3622618\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h736FFFFFFFF7E000; + ans = 64'h736FFFFFFFF7E000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3623619\n"); + end + ReadData1E = 64'hC01000000040FFFF; + ReadData2E = 64'h3FF67BEF450554E4; + ReadData3E = 64'h37FFFFFF001FFFFE; + ans = 64'hC0167BEF4560AC5F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3624620\n"); + end + ReadData1E = 64'hBFB3FF7FFFFFFFFF; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3625621\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFFE; + ReadData2E = 64'hB81FFFFFFFF801FF; + ReadData3E = 64'h425FFDFFFFFF8000; + ans = 64'h425FFDFFFFFF8000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3626622\n"); + end + ReadData1E = 64'h3FF000103FFFFFFE; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFF000FFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3627623\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'hBE3FFFFFF800FFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h3AEFFFFFF800FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3628624\n"); + end + ReadData1E = 64'h3FEF66DD15150252; + ReadData2E = 64'hB80000007FFFFDFF; + ReadData3E = 64'h41E0004007FFFFFE; + ans = 64'h41E0004007FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3629625\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h800FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3630626\n"); + end + ReadData1E = 64'h38C000FF7FFFFFFE; + ReadData2E = 64'h3AD2200000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3631627\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'hBF54D2D2ACC2C635; + ans = 64'hBF54D2D2ACC2C635; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3632628\n"); + end + ReadData1E = 64'hBFC910A0E996ABE5; + ReadData2E = 64'hBE8FFF7BFFFFFFFF; + ReadData3E = 64'h3E851BEFF5E1F434; + ans = 64'h3E8B5FFE5721AE4A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3633629\n"); + end + ReadData1E = 64'h41A0000004000200; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h3E50000002000200; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3634630\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'hBE60001FFFFE0000; + ReadData3E = 64'h43CFFFFFFFF80000; + ans = 64'h43CFFFFFFFF80000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3635631\n"); + end + ReadData1E = 64'h5FB00000400000FF; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h480000007FEFFFFE; + ans = 64'h5C700000400000FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3636632\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h37FFFFFFFFF7FDFF; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3637633\n"); + end + ReadData1E = 64'hBFEFDEFFFFFFFFFF; + ReadData2E = 64'hC3DC00007FFFFFFF; + ReadData3E = 64'hC0505402386BC096; + ans = 64'h43DBE3207F7BFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3638634\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3639635\n"); + end + ReadData1E = 64'hB80FFFFE000000FE; + ReadData2E = 64'hBFBEE327CB1C3578; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3640636\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'hBFB1FFFFDFFFFFFE; + ans = 64'hBFB1FFFFE0000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3641637\n"); + end + ReadData1E = 64'hC3FD46DCEA032B72; + ReadData2E = 64'h06200002000003FF; + ReadData3E = 64'hC7FFE01FFFFFFFFE; + ans = 64'hC7FFE01FFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3642638\n"); + end + ReadData1E = 64'hC015D01E8F7EC1B7; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3643639\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h3FB7DDDD17E24AC7; + ReadData3E = 64'h3FA0000001000001; + ans = 64'h3FA0000001000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3644640\n"); + end + ReadData1E = 64'h3FE000007FFFDFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h3A8FFBFFFFFFFFE0; + ans = 64'h3FF000007FFFDFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3645641\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h41EFFFFFFFBFFFDF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000080000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3646642\n"); + end + ReadData1E = 64'h3FEF7FFFFFFFFE00; + ReadData2E = 64'hC3E0000000008008; + ReadData3E = 64'h41EFFFFFF7DFFFFE; + ans = 64'hC3DF7FFFFFC0FA10; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3647643\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3648644\n"); + end + ReadData1E = 64'hC06FFC0000000080; + ReadData2E = 64'hC04FFDFF7FFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h40CFF9FFC010007F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3649645\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h001FFFFFFFC80000; + ans = 64'hBCC0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3650646\n"); + end + ReadData1E = 64'h4000007FC0000000; + ReadData2E = 64'hBEA3F7FFFFFFFFFE; + ReadData3E = 64'hC927FFFFFFFFFFFE; + ans = 64'hC927FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3651647\n"); + end + ReadData1E = 64'h0005F43969DF7062; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3652648\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'hEA7FFFF7FFFFEFFF; + ReadData3E = 64'h861FFFF8000007FF; + ans = 64'h672FFFF7FFFFEFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3653649\n"); + end + ReadData1E = 64'hBFE0002000080000; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h3F77FFFFFFFFFFF6; + ans = 64'hC330002000080001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3654650\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'hBFEFBFFFFFFFFFFE; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CAFE00000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3655651\n"); + end + ReadData1E = 64'hBC1FE00000000400; + ReadData2E = 64'h40200000003FFE00; + ReadData3E = 64'h0840000000000FBF; + ans = 64'hBC4FE000007F8004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3656652\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hFC90000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3657653\n"); + end + ReadData1E = 64'h37EAC8FFF86648D2; + ReadData2E = 64'hBFCFBFFFFFEFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3658654\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'hC5D0000400001FFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3659655\n"); + end + ReadData1E = 64'h4030000000010001; + ReadData2E = 64'hBFD00FFFFFFFFF7F; + ReadData3E = 64'hCD40000100020000; + ans = 64'hCD40000100020000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3660656\n"); + end + ReadData1E = 64'hC091045FA1CFDC67; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3661657\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h8010200000010000; + ReadData3E = 64'h3F8D08DCBFFB7788; + ans = 64'h3F8D08DCBFFB7788; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3662658\n"); + end + ReadData1E = 64'hBFE02FFFFFFFFFFE; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h20BFFEFFFFFFFF7F; + ans = 64'h20BFFEFFFFFFFF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3663659\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h4019BE1D5188FA4A; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3664660\n"); + end + ReadData1E = 64'hBFD0000040000000; + ReadData2E = 64'h43F6D800EFBB1923; + ReadData3E = 64'h3D0FFE0000003FFF; + ans = 64'hC3D6D8014B1B1CE2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3665661\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3666662\n"); + end + ReadData1E = 64'hBFE0000FFFFFFFEF; + ReadData2E = 64'hC000000001010000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4008000800808077; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3667663\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'hF4E0000000FDFFFF; + ans = 64'hF4E0000000FDFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3668664\n"); + end + ReadData1E = 64'h8B8FFFE03FFFFFFE; + ReadData2E = 64'hC4A26D3C3DA42C4A; + ReadData3E = 64'hC02FC0000001FFFE; + ans = 64'hC02FC0000001FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3669665\n"); + end + ReadData1E = 64'hC7E1CCFB08A11E7F; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'h44A1CCFB08A11E7E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3670666\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h3ECFFFFFFFFE01FF; + ReadData3E = 64'h9A7D585700BE162F; + ans = 64'hBB7FFFFFFFFE01FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3671667\n"); + end + ReadData1E = 64'h480E07FFFFFFFFFF; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h4800000200001FFF; + ans = 64'h47F0FC0400003FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3672668\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h3FEFFFFFFEFFEFFF; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3673669\n"); + end + ReadData1E = 64'h3F4BFF0000000000; + ReadData2E = 64'h79EFFFFFFFBFFFFB; + ReadData3E = 64'h7FFFFFFFFFFFF800; + ans = 64'h7FFFFFFFFFFFF800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3674670\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3675671\n"); + end + ReadData1E = 64'hC000772072F8FA8B; + ReadData2E = 64'hC008FACC79DDF91F; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h4019B4C873C0F735; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3676672\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h3FE6EDC345B30AD0; + ans = 64'h3FE6EDC345B30AD1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3677673\n"); + end + ReadData1E = 64'h780FFBF800000000; + ReadData2E = 64'hC23003FFFFFEFFFE; + ReadData3E = 64'hC3E000000FFFFFFF; + ans = 64'hFA5001FB7EFF001E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3678674\n"); + end + ReadData1E = 64'h41F0A29770A0A920; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3679675\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h41F759CBB2DFAB49; + ReadData3E = 64'hBFA113ABD1434260; + ans = 64'hBFA113C32B0EF540; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3680676\n"); + end + ReadData1E = 64'h42C9F7BB6D642AEB; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h7FF01D9CEB412063; + ans = 64'h7FF81D9CEB412063; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3681677\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'hBFF0003C00000000; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3682678\n"); + end + ReadData1E = 64'h304F000000000FFF; + ReadData2E = 64'hB0B0FFFFFFDFFFFF; + ReadData3E = 64'h3F2FFF7FFFFFFFDF; + ans = 64'h3F2FFF7FFFFFFFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3683679\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3684680\n"); + end + ReadData1E = 64'h41DFFFFFBEFFFFFF; + ReadData2E = 64'hC2810000000FFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3685681\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'h47E0000000FF0000; + ans = 64'h47E0000000FF0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3686682\n"); + end + ReadData1E = 64'h47F0003FFFFFFDFE; + ReadData2E = 64'h32800000017FFFFF; + ReadData3E = 64'hC0B00001FFFFFFF7; + ans = 64'hC0B00001FFFFFFF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3687683\n"); + end + ReadData1E = 64'h37F391515BC5515C; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3688684\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'hB77FFFFFFFDFFFFF; + ReadData3E = 64'hC3CFFFFFFFEFFF7F; + ans = 64'hC3CFFFFFFFEFFF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3689685\n"); + end + ReadData1E = 64'hC0BFFFFFDFFFFFFE; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'hC0F16FFF4B8A4A7E; + ans = 64'h441FFFFFDFFFFFF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3690686\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'h3FE3E3EFFCC290B2; + ReadData3E = 64'h8010000000000001; + ans = 64'hBC93E3EFFCC290B2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3691687\n"); + end + ReadData1E = 64'hC7AFFFF7FFFFDFFE; + ReadData2E = 64'h3E4FFFFBFFEFFFFF; + ReadData3E = 64'h27A0000001FFF7FE; + ans = 64'hC60FFFF3FFF0E001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3692688\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h7C9FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3693689\n"); + end + ReadData1E = 64'h3FF0000008000100; + ReadData2E = 64'hBFC00BFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401F7F9FFFBFCFF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3694690\n"); + end + ReadData1E = 64'hBCA0000000000000; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h3810000800007FFF; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3695691\n"); + end + ReadData1E = 64'hBF9001FFFFFFF7FF; + ReadData2E = 64'hC02000000FF00000; + ReadData3E = 64'hBF16A0B7AED3D23B; + ans = 64'h3FBFFE57F1F83709; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3696692\n"); + end + ReadData1E = 64'hC3C0000006FFFFFF; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3697693\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'hC3400010000000FE; + ReadData3E = 64'hBFBFFC0000080000; + ans = 64'h3FEC009FFFFF01FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3698694\n"); + end + ReadData1E = 64'h47FFFFBFFFFFEFFE; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'hB81FFFFFFFF3FFFF; + ans = 64'hB81FFFFFFFF3FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3699695\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'hB67003FFEFFFFFFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3700696\n"); + end + ReadData1E = 64'h3FD00000000001F6; + ReadData2E = 64'hABDFFFFFFE000001; + ReadData3E = 64'hC420000000000000; + ans = 64'hC420000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3701697\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3702698\n"); + end + ReadData1E = 64'h3E107FFFFFFFFEFF; + ReadData2E = 64'hC3F53A054403FCD9; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hC215E3D56E281B6B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3703699\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'hC010200000FFFFFF; + ans = 64'hC010200000FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3704700\n"); + end + ReadData1E = 64'hBF07561059D0A8EC; + ReadData2E = 64'h42CFFFFFFF001FFF; + ReadData3E = 64'h37EFFFFEFFFFBFFE; + ans = 64'hC1E7561059160FBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3705701\n"); + end + ReadData1E = 64'h07C0002000000800; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'h04800020000007FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3706702\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h48EFFC000003FFFF; + ReadData3E = 64'h43FFFE0000FFFFFF; + ans = 64'hC59FFBFFF8048001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3707703\n"); + end + ReadData1E = 64'hE59FFFFFFC07FFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h7FE000010001FFFF; + ans = 64'h7FE000010001FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3708704\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h7AB01FFFFFFFFDFE; + ReadData3E = 64'h4000000000000001; + ans = 64'hF7601FFFFFFFFDFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3709705\n"); + end + ReadData1E = 64'h3FCFFFFF9FFFFFFE; + ReadData2E = 64'hBFD0040000000007; + ReadData3E = 64'h40803FFFFFFFFFEE; + ans = 64'h40803F7FE001804E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3710706\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3711707\n"); + end + ReadData1E = 64'h7FEFFFFFF8008000; + ReadData2E = 64'h40EFFFFFFF7FFFF7; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3712708\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h403D79EF3C6786E1; + ans = 64'h403D79EF3C6786E1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3713709\n"); + end + ReadData1E = 64'h47EFFFDFFFFFF7FF; + ReadData2E = 64'hBFCFBFFFFFFFFF80; + ReadData3E = 64'hC1C08000000003FF; + ans = 64'hC7CFBFE03FFFF78F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3714710\n"); + end + ReadData1E = 64'hBFB8105149F3CA79; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3715711\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h3AD0200100000000; + ReadData3E = 64'hB7FE230592BBD561; + ans = 64'hB7FE434594BBD561; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3716712\n"); + end + ReadData1E = 64'h4010000000200000; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'hBFFFFFFFFFFFFFF0; + ans = 64'h4018000000400006; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3717713\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h43F0000000001007; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hC0A0008000001008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3718714\n"); + end + ReadData1E = 64'h7FE1868CFB076BC1; + ReadData2E = 64'hC34000000000037F; + ReadData3E = 64'hB7EFFFFC003FFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3719715\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3720716\n"); + end + ReadData1E = 64'h0027DD731814408C; + ReadData2E = 64'hBFDFFFFFFFFFDC00; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3721717\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h48B0000003FFFFFA; + ans = 64'h48B0000003FFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3722718\n"); + end + ReadData1E = 64'h4AB18433CBF5E148; + ReadData2E = 64'h37F00000007FFFFF; + ReadData3E = 64'h37F0000000200002; + ans = 64'h42B18433CC8202E5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3723719\n"); + end + ReadData1E = 64'h41E03FFFFFFFFFDF; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h45403FFFFFFFFFDE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3724720\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'hC05FFC000000001F; + ReadData3E = 64'h001FFFE00000003F; + ans = 64'h3D0FFC0000000021; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3725721\n"); + end + ReadData1E = 64'hC3FFF9FFFFFFFFFE; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h3D6000008000000E; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3726722\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'hC80FE00000000003; + ReadData3E = 64'h0000000000000001; + ans = 64'h44BFE00000000005; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3727723\n"); + end + ReadData1E = 64'h41F1FFFFFFFEFFFF; + ReadData2E = 64'h402000000000080F; + ReadData3E = 64'hCB6FFFFFFFF00FFF; + ans = 64'hCB6FFFFFFFF00FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3728724\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3729725\n"); + end + ReadData1E = 64'h3C53D4916CD9D929; + ReadData2E = 64'h4030000001000006; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3730726\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hEC6FFFFE03FFFFFF; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3731727\n"); + end + ReadData1E = 64'hC01EFFFFFFFFFFFE; + ReadData2E = 64'h400FFFFFFFF80000; + ReadData3E = 64'hC00FFFFFFFFBFFFE; + ans = 64'hC0417FFFFFFBDFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3732728\n"); + end + ReadData1E = 64'h3FD0630592F80CEC; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3733729\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h3FA0027FFFFFFFFF; + ReadData3E = 64'hC00F7FFFFFFFFF7E; + ans = 64'hC00F7FFFFFFFFF7E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3734730\n"); + end + ReadData1E = 64'h41FFFFFFFFFFFE02; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h40DFFFF7FFFDFFFF; + ans = 64'h40DFFFF7FFFDFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3735731\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h3FB00FFFF7FFFFFE; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3736732\n"); + end + ReadData1E = 64'h413FFFFFFFBDFFFE; + ReadData2E = 64'hBFCFEFFFFBFFFFFF; + ReadData3E = 64'hBFF000000003FFFB; + ans = 64'hC11FF003FBBE20FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3737733\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3738734\n"); + end + ReadData1E = 64'hC807FFFFF7FFFFFF; + ReadData2E = 64'h454FFFFF7FFFFFFC; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hCD67FFFF9800001C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3739735\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'hBFD0000000200010; + ans = 64'hBFD0000000200010; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3740736\n"); + end + ReadData1E = 64'h30A00100000007FF; + ReadData2E = 64'hBCA977830EF3AC79; + ReadData3E = 64'h29BFFF0FFFFFFFFE; + ans = 64'hAD59791A8724A86E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3741737\n"); + end + ReadData1E = 64'hC3E4C25728096BE9; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3742738\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h41D7EFFFFFFFFFFF; + ReadData3E = 64'h381000000007FFEE; + ans = 64'hBE87F00000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3743739\n"); + end + ReadData1E = 64'h43EBFFBFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h34A07EFFFFFFFFFF; + ans = 64'hC3DBFFBFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3744740\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h7FEFFFFFFFFE3FFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hFC9FFFFFFFFE4001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3745741\n"); + end + ReadData1E = 64'hBFAFFFFF07FFFFFF; + ReadData2E = 64'h43AFFFFFFEFFE000; + ReadData3E = 64'hB85000000000017E; + ans = 64'hC36FFFFF06FFE007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3746742\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3747743\n"); + end + ReadData1E = 64'hD60FFFFFF8000040; + ReadData2E = 64'h47EFFFF0FFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hDE0FFFF0F80003FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3748744\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h380FFFFFFFDF8000; + ans = 64'h3CA0000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3749745\n"); + end + ReadData1E = 64'h3A0980CC588A4F63; + ReadData2E = 64'hB810000020001FFF; + ReadData3E = 64'hC000000FFFDFFFFF; + ans = 64'hC000000FFFDFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3750746\n"); + end + ReadData1E = 64'h40198F7B6975032E; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h4010000000000000; + ans = 64'hC0218F7B6975032E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3751747\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h4C30000040100000; + ReadData3E = 64'hB7E1C6A9418C5C49; + ans = 64'hC8E0000040100001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3752748\n"); + end + ReadData1E = 64'h43FFD44E55392990; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'hBF64000001FFFFFF; + ans = 64'hC41FD44E5539298F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3753749\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'h800DFFFFFFEFFFFF; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3754750\n"); + end + ReadData1E = 64'h3FD00000FF7FFFFF; + ReadData2E = 64'hC158C867FA5E30D7; + ReadData3E = 64'h3FB938F9170EEBAF; + ans = 64'hC138C8696CE57424; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3755751\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h3CC8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3756752\n"); + end + ReadData1E = 64'hC3DFFFFF00008000; + ReadData2E = 64'h000FFFFFFFBFFF7F; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3757753\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'hBE21000000000FFF; + ans = 64'h3FEFFFFFFEF00004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3758754\n"); + end + ReadData1E = 64'h3CC5349E6F537C2F; + ReadData2E = 64'h401FFFF9FFFFFFFF; + ReadData3E = 64'hEC8FFDFE00000000; + ans = 64'hEC8FFDFE00000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3759755\n"); + end + ReadData1E = 64'h47FFFFFFC0000003; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hCB5FFFFFC0000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3760756\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'hC02FFFFFFFE000FF; + ReadData3E = 64'h416FFE0001FFFFFE; + ans = 64'h416FFE0001FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3761757\n"); + end + ReadData1E = 64'h43F007FFBFFFFFFF; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h43DFFFFEFFFFFFBF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3762758\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'hC007DB6612AEC87D; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3763759\n"); + end + ReadData1E = 64'hBF8CC91C59E39D5E; + ReadData2E = 64'hC00FFFFF7FFFEFFE; + ReadData3E = 64'h43CFFFDFFFFFFFFE; + ans = 64'h43CFFFDFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3764760\n"); + end + ReadData1E = 64'hBCA0000000000001; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3765761\n"); + end + ReadData1E = 64'hFFDEFF7FFFFFFFFE; + ReadData2E = 64'hC7E0000008000010; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3766762\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'hBFD00002FFFFFFFF; + ans = 64'hBFD00002FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3767763\n"); + end + ReadData1E = 64'hB81EBDA2F8A1B708; + ReadData2E = 64'h40200FFFFFFFFFFF; + ReadData3E = 64'h4020000001001FFF; + ans = 64'h4020000001001FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3768764\n"); + end + ReadData1E = 64'hF5000020FFFFFFFF; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h0010000000000000; + ans = 64'hB5200020FFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3769765\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hBFE0000003DFFFFF; + ReadData3E = 64'hC02FFFF0007FFFFF; + ans = 64'hC02FFFF0007FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3770766\n"); + end + ReadData1E = 64'h41E1FFF000000000; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h3E1FFFF8007FFFFE; + ans = 64'h3E1FFFF8007FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3771767\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hC35FFF7FFF7FFFFE; + ReadData3E = 64'hC010000000000001; + ans = 64'h400FFEFFFEFFFFF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3772768\n"); + end + ReadData1E = 64'hC1D000000000007D; + ReadData2E = 64'h43E00000005FFFFF; + ReadData3E = 64'hC3DFFFF003FFFFFF; + ans = 64'hC5C0000000A0005C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3773769\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3774770\n"); + end + ReadData1E = 64'h380FFFFFFFFFFF87; + ReadData2E = 64'hB80ED47884B18961; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3775771\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h7FF4CFDA7A384599; + ans = 64'h7FFCCFDA7A384599; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3776772\n"); + end + ReadData1E = 64'hBF2FF7FFFFFFFFDF; + ReadData2E = 64'hFBBFC001FFFFFFFF; + ReadData3E = 64'hB7EFE7FFFFFFFFFE; + ans = 64'h7AFFB811FF7FFFDE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3777773\n"); + end + ReadData1E = 64'h41E42C620E7DD766; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3778774\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hC1D07ED7BF8900BE; + ReadData3E = 64'hC02FFEFBFFFFFFFE; + ans = 64'hC02FFEFBF7C0941E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3779775\n"); + end + ReadData1E = 64'h801993799437864A; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h41C00000800000FF; + ans = 64'h41C00000800000FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3780776\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h4010FFFFFFFFF000; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FDFFFFFFFFFFFF1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3781777\n"); + end + ReadData1E = 64'hBFC7FFDFFFFFFFFE; + ReadData2E = 64'h434FFFC000000007; + ReadData3E = 64'h802FFFFFFFFFE080; + ans = 64'hC327FFB000400003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3782778\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3783779\n"); + end + ReadData1E = 64'h2BFFF800003FFFFF; + ReadData2E = 64'hC1D000200000007E; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3784780\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'h4800000008007FFF; + ans = 64'h4800000008007FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3785781\n"); + end + ReadData1E = 64'h3FBFFFFE00000040; + ReadData2E = 64'hB8103FFFFFFF0000; + ReadData3E = 64'hBB807FBFFFFFFFFF; + ans = 64'hBB807FBFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3786782\n"); + end + ReadData1E = 64'h7FFFFDFFFFFFFEFE; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'h7FFFFDFFFFFFFEFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3787783\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hC0481C0A492A3304; + ReadData3E = 64'h41D03FFFFFFFFFC0; + ans = 64'h41D03FFFFFFFFFC0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3788784\n"); + end + ReadData1E = 64'h666FFFFFFFFFEF00; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'hBF1BFFFFFFBFFFFF; + ans = 64'h668FFFFFFFFFEF00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3789785\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hBFCFFFDF7FFFFFFF; + ReadData3E = 64'h8010000000000001; + ans = 64'h3C8FFFDF7FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3790786\n"); + end + ReadData1E = 64'h40BEF5FC8CF72028; + ReadData2E = 64'hC0180000000FFFFF; + ReadData3E = 64'hC1F003FFFFBFFFFF; + ans = 64'hC1F0040B9BFEB4E3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3791787\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hBFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3792788\n"); + end + ReadData1E = 64'h01F000080007FFFF; + ReadData2E = 64'hC060000040003FFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3793789\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h4322000000003FFE; + ans = 64'h4322000000003FF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3794790\n"); + end + ReadData1E = 64'hC484653435BAEA1C; + ReadData2E = 64'hBFC0000000040200; + ReadData3E = 64'hC00EFFFFFFFFFEFE; + ans = 64'h4454653435C005F6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3795791\n"); + end + ReadData1E = 64'h47EFFFFBFFFFFC00; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3796792\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hBFCFFFFFFFFF7FBF; + ReadData3E = 64'h403EDEC4ECF4BDA1; + ans = 64'h403EDEC4ECF4BDA1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3797793\n"); + end + ReadData1E = 64'h8012C3D1F815F14F; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hC3400000007FFFFF; + ans = 64'hC340000000800001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3798794\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hAD500001FFEFFFFE; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3799795\n"); + end + ReadData1E = 64'h434FFFFFFFF7FFFB; + ReadData2E = 64'hC34003FFFFFEFFFF; + ReadData3E = 64'hC7FD8AD83C8E15C4; + ans = 64'hC7FD8AD8BCAE15C4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3800796\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3801797\n"); + end + ReadData1E = 64'hC08242A08AEB8A58; + ReadData2E = 64'h5FCFFFFFFFFFFFD7; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hE06242A08AEB8A41; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3802798\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'hD5D8000000000400; + ans = 64'hD5D8000000000400; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3803799\n"); + end + ReadData1E = 64'hBFFFBEFFFFFFFFFE; + ReadData2E = 64'hBFE1000020000000; + ReadData3E = 64'h46DFFFFFFBFFBFFE; + ans = 64'h46DFFFFFFBFFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3804800\n"); + end + ReadData1E = 64'h40BFFE0000800000; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'h80DFFE0000800000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3805801\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hBFF0002FFFFFFFFF; + ReadData3E = 64'hB80FFFFE1FFFFFFF; + ans = 64'h3CB0002FFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3806802\n"); + end + ReadData1E = 64'hB160001000000400; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'h3FCFFFE001000000; + ans = 64'h3FCFFFE001000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3807803\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h400227B03D692A16; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3808804\n"); + end + ReadData1E = 64'h3ADFF0003FFFFFFF; + ReadData2E = 64'h000FFFFFFFC000FF; + ReadData3E = 64'h43400000007F8000; + ans = 64'h43400000007F8000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3809805\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3810806\n"); + end + ReadData1E = 64'h7FEA59F4AA665EB8; + ReadData2E = 64'h41CFFFFFFFBFEFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3811807\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h3D9FFFFFFFFC07FE; + ans = 64'h3DA00007FFFE03FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3812808\n"); + end + ReadData1E = 64'h405AC40D9E8CD522; + ReadData2E = 64'hC3C00001FFFFDFFF; + ReadData3E = 64'h41CFFFFEFFEFFFFF; + ans = 64'hC42AC410F70DD36A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3813809\n"); + end + ReadData1E = 64'h4010008000000800; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3814810\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h3FBFFFFFFFFF9FFF; + ReadData3E = 64'h41E0000800007FFF; + ans = 64'h41E0000800007FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3815811\n"); + end + ReadData1E = 64'h143FFFF7C0000000; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'hC0000000000FFFBF; + ans = 64'hC0000000000FFFBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3816812\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h40200100000003FE; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000021; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3817813\n"); + end + ReadData1E = 64'hC00FFEFFFFF00000; + ReadData2E = 64'hB7F00F7FFFFFFFFE; + ReadData3E = 64'hC00FFFC000000FFF; + ans = 64'hC00FFFC000000FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3818814\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FE0000000000003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3819815\n"); + end + ReadData1E = 64'hA70FFFC000000007; + ReadData2E = 64'h3DE1FFF800000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3820816\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h37E0000000007F7F; + ans = 64'h3CBFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3821817\n"); + end + ReadData1E = 64'h47EDFFFFFF7FFFFF; + ReadData2E = 64'h3F8FFFFFC0000400; + ReadData3E = 64'hB84FFFF3FFFFFFFE; + ans = 64'h478DFFFFC38003C0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3822818\n"); + end + ReadData1E = 64'h403FFFFFF7FFFFBF; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hC05FBFFFF7FFFFBD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3823819\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'h3EF00FFFFFFFFFF8; + ReadData3E = 64'hBFEFFFFF00001FFF; + ans = 64'hBFEFFFFF00001FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3824820\n"); + end + ReadData1E = 64'h59F79142DC337D3B; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h3DAFE000000FFFFF; + ans = 64'hDA179142DC337D3C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3825821\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hC55FFFFFFFDFFFFB; + ReadData3E = 64'h0000000000000001; + ans = 64'h421FFFFFFFDFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3826822\n"); + end + ReadData1E = 64'h8005A90EF36C6C98; + ReadData2E = 64'hC80C9D4CAF14A733; + ReadData3E = 64'hCAE25198538CB055; + ans = 64'hCAE25198538CB055; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3827823\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h4000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3828824\n"); + end + ReadData1E = 64'h3C20001010000000; + ReadData2E = 64'h519FFFF7FFFE0000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h4DD0000C0FFAFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3829825\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h35AFFE003FFFFFFF; + ans = 64'h7C9FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3830826\n"); + end + ReadData1E = 64'h3F7200003FFFFFFF; + ReadData2E = 64'h411000101FFFFFFE; + ReadData3E = 64'hB7E000000000010F; + ans = 64'h409200126400407D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3831827\n"); + end + ReadData1E = 64'hB80301E353701167; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h780301E353701166; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3832828\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hC1EFC00000000000; + ReadData3E = 64'hD550EFFFFFFFFFFE; + ans = 64'hD550EFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3833829\n"); + end + ReadData1E = 64'h37EFFFFFFFFFFFC2; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'hBFB0005FFFFFFFFE; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3834830\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFF; + ReadData2E = 64'hBFF303AEE28A01D1; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3835831\n"); + end + ReadData1E = 64'hC0ABC7CFCC8701B7; + ReadData2E = 64'h48000000000001DF; + ReadData3E = 64'h3EAFFFFF7FFFFFFE; + ans = 64'hC8BBC7CFCC8704F7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3836832\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3837833\n"); + end + ReadData1E = 64'hBFB9482F5DD39044; + ReadData2E = 64'h57710000001FFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hD73ADCB253E359A5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3838834\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h4F276B26B48485F2; + ans = 64'h4F276B26B48485F2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3839835\n"); + end + ReadData1E = 64'hBCA1FFFEFFFFFFFF; + ReadData2E = 64'hBFCFFFE0000003FF; + ReadData3E = 64'h38003FFFFFFFFF7F; + ans = 64'h3C81FFED0001023E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3840836\n"); + end + ReadData1E = 64'h3F87C22AC53B4B84; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3841837\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h4011000000000007; + ReadData3E = 64'h329538346A0493EA; + ans = 64'hBCD1000000000006; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3842838\n"); + end + ReadData1E = 64'hBFD000000400000F; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'hC05BF7FFFFFFFFFE; + ans = 64'hC05BF7FFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3843839\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h3C3FFFFDFFFFFBFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3844840\n"); + end + ReadData1E = 64'hC02000000100000F; + ReadData2E = 64'hC1C54C55DE00AE03; + ReadData3E = 64'hC3D973E2D4C98108; + ans = 64'hC3D973E2D4744FB1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3845841\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3846842\n"); + end + ReadData1E = 64'hBCA07F328B1FC623; + ReadData2E = 64'h402FFFFFFF03FFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hBCE07F328A9DDC74; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3847843\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFC00003FFFF; + ans = 64'h7FEFFFC00003FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3848844\n"); + end + ReadData1E = 64'h404FFFC001FFFFFF; + ReadData2E = 64'h4010001FFFFEFFFE; + ReadData3E = 64'hBCA0002000000006; + ans = 64'h4070000000BF01FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3849845\n"); + end + ReadData1E = 64'hC7FFFFFFFF8007FF; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h4010000000000000; + ans = 64'hC7EFFFFFFF800801; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3850846\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h386FFFFFF800003E; + ReadData3E = 64'hF02321F99F93693B; + ans = 64'hF02321F99F93693B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3851847\n"); + end + ReadData1E = 64'h3CAF7FFF00000000; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h3F4FDFFFFFFFEFFF; + ans = 64'h3F4FDFFFFFFFF7DF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3852848\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'hBF9FFFC000000001; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0FFFE00000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3853849\n"); + end + ReadData1E = 64'hFFD0000207FFFFFF; + ReadData2E = 64'hC030000FFFFFF7FF; + ReadData3E = 64'hBC4DB838F528A788; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3854850\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCC7FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3855851\n"); + end + ReadData1E = 64'hB810080000000002; + ReadData2E = 64'hFFEE49596EE35FAA; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h780E587E1B9AD15E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3856852\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h3FCFFE0FFFFFFFFF; + ans = 64'h3FCFFE0FFFFFFFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3857853\n"); + end + ReadData1E = 64'hB7EFFFFFFDFFFEFF; + ReadData2E = 64'h401FFFFFBC000000; + ReadData3E = 64'hC1E00B1135D2FC6A; + ans = 64'hC1E00B1135D2FC6A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3858854\n"); + end + ReadData1E = 64'h43B000000004007E; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h43D000000004007E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3859855\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h401003FFFFFFFFFE; + ReadData3E = 64'h47E00000000FFBFF; + ans = 64'h47E00000000FFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3860856\n"); + end + ReadData1E = 64'h40291F272E877906; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000001200; + ans = 64'h40591F272E877904; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3861857\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'hB81000000002000F; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3862858\n"); + end + ReadData1E = 64'hBD8FFFFFFFFFFFFF; + ReadData2E = 64'h65D58084927BCE44; + ReadData3E = 64'h3F200000000FFFEF; + ans = 64'hE3758084927BCE43; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3863859\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3864860\n"); + end + ReadData1E = 64'h3CAFFFFFFFF7FFEE; + ReadData2E = 64'hBAC6AD2154A8F8C9; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3865861\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hC000000020000000; + ans = 64'hFCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3866862\n"); + end + ReadData1E = 64'hB7F3003AC60229BC; + ReadData2E = 64'h3FCF8EFE5ED214BC; + ReadData3E = 64'h7FE000200FFFFFFF; + ans = 64'h7FE000200FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3867863\n"); + end + ReadData1E = 64'h40000001007FFFFF; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h0010000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3868864\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'hC3E026F2C72D3F98; + ReadData3E = 64'hC03FFFFFFFFFFFFF; + ans = 64'h409FCDE58E5A7F2E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3869865\n"); + end + ReadData1E = 64'hBFCFEFFFFFFFFFDF; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h3F90000040000008; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3870866\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'hBFE0001FFFFFFFFB; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3871867\n"); + end + ReadData1E = 64'h3FC08000007FFFFE; + ReadData2E = 64'h43EFFFFFFFBFFFEF; + ReadData3E = 64'h41F7FFFFFFFFFEFF; + ans = 64'h43C08000011EFFF5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3872868\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3873869\n"); + end + ReadData1E = 64'hADC000000000FFFB; + ReadData2E = 64'hC3F01FF7FFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3874870\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h230FFFFFFFFFFF86; + ans = 64'h230FFFFFFFFFFF86; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3875871\n"); + end + ReadData1E = 64'h338FFFFFFFFFFDFE; + ReadData2E = 64'hC030000000002003; + ReadData3E = 64'h40C88BECCF7F0107; + ans = 64'h40C88BECCF7F0107; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3876872\n"); + end + ReadData1E = 64'h3FBE2F6E9B0117FC; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3877873\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h3F5FFFFFFFFC0FFF; + ReadData3E = 64'h37ED2985E845FB5C; + ans = 64'hBC1FFFFFFFFC0FFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3878874\n"); + end + ReadData1E = 64'hC3DFFFFFE0000002; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h7FE000000008FFFF; + ans = 64'h7FE000000008FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3879875\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'hBFE00000000001F8; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3880876\n"); + end + ReadData1E = 64'h474FFDFFFFFBFFFF; + ReadData2E = 64'hC7F000000000003F; + ReadData3E = 64'h43D0000000003FDF; + ans = 64'hCF4FFDFFFFFC007D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3881877\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3882878\n"); + end + ReadData1E = 64'hC14454BEFACBEA7D; + ReadData2E = 64'h43D72C7226115A51; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3883879\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hC3D19EAE13AD1573; + ans = 64'hC3D19EAE13AD1573; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3884880\n"); + end + ReadData1E = 64'hC0B00000FBFFFFFF; + ReadData2E = 64'hC0160B702F735983; + ReadData3E = 64'hBFBFFFFFFFFFBF7E; + ans = 64'h40D60B698AA7806D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3885881\n"); + end + ReadData1E = 64'h3CADFFFFC0000000; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3886882\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h43C000800000007F; + ReadData3E = 64'hC0001FFFFFFFFFFF; + ans = 64'hC08010A00000007E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3887883\n"); + end + ReadData1E = 64'hC7E010003FFFFFFF; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'hF69FFFFFFFE003FF; + ans = 64'hF69FFFFFFFE003FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3888884\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'h3FDFFFC000008000; + ReadData3E = 64'h8010000000000001; + ans = 64'hBC9FFFC000007FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3889885\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFF3F; + ReadData2E = 64'h0C2D39D987911B1B; + ReadData3E = 64'h80271243089EB77A; + ans = 64'hFFFFFFFFFFFFFF3F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3890886\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h3CC0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3891887\n"); + end + ReadData1E = 64'hBFCFFFC000000FFE; + ReadData2E = 64'h3805DA7C001844FF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3892888\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hB587BB6F29C63E16; + ans = 64'h3CCFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3893889\n"); + end + ReadData1E = 64'h3FC0000000001FFC; + ReadData2E = 64'h801B1A50162869DA; + ReadData3E = 64'hC3FC00000003FFFE; + ans = 64'hC3FC00000003FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3894890\n"); + end + ReadData1E = 64'h7FDFFFDFFFFFFFBE; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3895891\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'hFFD00000003FFFEF; + ReadData3E = 64'hC060000008000003; + ans = 64'h7C900000003FFFEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3896892\n"); + end + ReadData1E = 64'h2B1FFFFFFFFDFFFE; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'hBFF0000000040080; + ans = 64'hBFF0000000040080; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3897893\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'hC02B29123492F5B4; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3898894\n"); + end + ReadData1E = 64'h402FF00000040000; + ReadData2E = 64'h802FE1FFFFFFFFFF; + ReadData3E = 64'h426FDFFFFFFFEFFF; + ans = 64'h426FDFFFFFFFEFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3899895\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3900896\n"); + end + ReadData1E = 64'h000D800000000000; + ReadData2E = 64'hC3F003FFFFFFFFE0; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3901897\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h07CFC00008000000; + ans = 64'h7CAFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3902898\n"); + end + ReadData1E = 64'hC1242AE9BBBEBC26; + ReadData2E = 64'hFFD19135166C9BB4; + ReadData3E = 64'hC7E0000000002FFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3903899\n"); + end + ReadData1E = 64'h37E7E4EE9AE909C1; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h8000000000000000; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3904900\n"); + end + ReadData1E = 64'hBCAFFFFFFFFFFFFE; + ReadData2E = 64'hC03FFFE000000800; + ReadData3E = 64'h480FBFFFFFC00000; + ans = 64'h480FBFFFFFC00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3905901\n"); + end + ReadData1E = 64'hC1DFFFC000000200; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'hCDBC000000001FFF; + ans = 64'hCDBC000000001FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3906902\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hFFE00002000001FF; + ReadData3E = 64'h4000000000000001; + ans = 64'h7FC00002000001FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3907903\n"); + end + ReadData1E = 64'hC1FFC00040000000; + ReadData2E = 64'h409F6FFFFFFFFFFF; + ReadData3E = 64'h41D573240393DD61; + ans = 64'hC2AF3074A5BFE360; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3908904\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3909905\n"); + end + ReadData1E = 64'h40D00037FFFFFFFF; + ReadData2E = 64'h4571FFFFFFDFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h4652003EFFDFFF8E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3910906\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'h4DB01FE000000000; + ans = 64'h4DB01FE000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3911907\n"); + end + ReadData1E = 64'hDD756CAAC27AB516; + ReadData2E = 64'h3ECC0FFFFFFFFFFF; + ReadData3E = 64'h34FFFFFFFF000FFE; + ans = 64'hDC52C9CBBF8C9BCD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3912908\n"); + end + ReadData1E = 64'h3FC0000400400000; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3913909\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h47F03FFFFFFFBFFF; + ReadData3E = 64'hC7F0000000001FFC; + ans = 64'hC7F4100000000FFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3914910\n"); + end + ReadData1E = 64'h3CAFFEFFFFFFFC00; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h403000000000007E; + ans = 64'h403000000000007E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3915911\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hC7E001FFFFFFF000; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h47C001FFFFFFF000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3916912\n"); + end + ReadData1E = 64'hFFD92929B6B14C7E; + ReadData2E = 64'h3F9FFFFFFDF80000; + ReadData3E = 64'h4033FFFF00000000; + ans = 64'hFF892929B5186F98; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3917913\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FD7FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3918914\n"); + end + ReadData1E = 64'h3CA0000000000008; + ReadData2E = 64'h3FFA27A23CA5E6CF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3919915\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'hC03FFFEFFFFFFFC0; + ans = 64'hC0400FF7FFFFFFE0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3920916\n"); + end + ReadData1E = 64'h3FC07FF7FFFFFFFF; + ReadData2E = 64'h37E3DFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFE00001FFF; + ans = 64'h7FEFFFFE00001FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3921917\n"); + end + ReadData1E = 64'h401FF001FFFFFFFE; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h4021F800FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3922918\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h4000003FFFBFFFFF; + ReadData3E = 64'h3A4DF93B6BEA1FC2; + ans = 64'hBFE0003FFFBFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3923919\n"); + end + ReadData1E = 64'h7FFFFFFFF7FFFFFB; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h41300000002000FF; + ans = 64'h7FFFFFFFF7FFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3924920\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h9F401FFFFFBFFFFE; + ReadData3E = 64'h0000000000000001; + ans = 64'h1F201FFFFFBFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3925921\n"); + end + ReadData1E = 64'hC090000040003FFE; + ReadData2E = 64'h05944E8EDE5B1401; + ReadData3E = 64'hB74000001FBFFFFF; + ans = 64'hB74000001FBFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3926922\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3927923\n"); + end + ReadData1E = 64'h09F0000001003FFF; + ReadData2E = 64'hC18FFFFFFF8001FE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3928924\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h47EFFFFFBFFFFFEF; + ans = 64'h47EFFFFFBFFFFFEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3929925\n"); + end + ReadData1E = 64'h40007FFFFFFEFFFF; + ReadData2E = 64'hFFF1618EFBEA9809; + ReadData3E = 64'h0E0FBF8000000000; + ans = 64'hFFF9618EFBEA9809; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3930926\n"); + end + ReadData1E = 64'h69B001FFFFFFF7FE; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h69E001FFFFFFF7FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3931927\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hFFE82570C3599223; + ReadData3E = 64'hB5CF7FFFFFFFFFFE; + ans = 64'h7FC82570C3599223; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3932928\n"); + end + ReadData1E = 64'h41EFFFDFFFFFFFFD; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h0872E4F85D3E8E37; + ans = 64'h454FFFDFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3933929\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h480007FFFFEFFFFE; + ReadData3E = 64'h4340000000000001; + ans = 64'hC7E007FFFFEFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3934930\n"); + end + ReadData1E = 64'hA6EFFFFFE03FFFFF; + ReadData2E = 64'h37EF80000000007F; + ReadData3E = 64'h4030008001FFFFFF; + ans = 64'h4030008001FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3935931\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hFFC0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3936932\n"); + end + ReadData1E = 64'hC3F614E284142B1A; + ReadData2E = 64'h3E7737645325E2D3; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC280053BEEE5AA95; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3937933\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'hBFB0001FFFFFE000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3938934\n"); + end + ReadData1E = 64'hC01FFFFFFC040000; + ReadData2E = 64'hC8F768DC2E5952CA; + ReadData3E = 64'h40CFFFFFFFFF0100; + ans = 64'h492768DC2B6F2460; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3939935\n"); + end + ReadData1E = 64'h41CA8F74A0374367; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3940936\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hC0F0800000001FFE; + ReadData3E = 64'hBFFFFFFFFDFFFFFF; + ans = 64'h40D07F80000027FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3941937\n"); + end + ReadData1E = 64'h1F1FFFFFFC00FFFE; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'hC7F0203FFFFFFFFF; + ans = 64'hC7F0203FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3942938\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hC1C95289694D3D23; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h41A95289674D3D23; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3943939\n"); + end + ReadData1E = 64'h487FFFFFE0000FFF; + ReadData2E = 64'h37E00000000FFFFB; + ReadData3E = 64'h41CFFFFC00000008; + ans = 64'h41CFFFFC7FFFFF89; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3944940\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3945941\n"); + end + ReadData1E = 64'hBEB0000001FFF000; + ReadData2E = 64'hC7E6488EDF70D264; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h46A6488EE239CDF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3946942\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'hF12FDFFFF7FFFFFE; + ans = 64'hF12FDFFFF7FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3947943\n"); + end + ReadData1E = 64'hCD959EA55DFD5F55; + ReadData2E = 64'hFFDF418A9AACF488; + ReadData3E = 64'h47EFFEFFFFFFFFDF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3948944\n"); + end + ReadData1E = 64'hC008B7A53A93921B; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3949945\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h381FBFFFFFF7FFFF; + ReadData3E = 64'h01EFFFDFFFFFFFFE; + ans = 64'hB7FFBFFFFFF7FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3950946\n"); + end + ReadData1E = 64'h380FFFFFFFFF7FFE; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h37FFFFFFEFF00000; + ans = 64'h37EFFFFFDFE08002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3951947\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'h3CD000FFFFFFFFFA; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hBCA001FFFFFFFFF3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3952948\n"); + end + ReadData1E = 64'h480FFFFC00000000; + ReadData2E = 64'hC0E0000FFFFFFBFF; + ReadData3E = 64'h41D075E473DD3166; + ans = 64'hC900000DFFFDFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3953949\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h3FBFFFFFFFFFFFF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3954950\n"); + end + ReadData1E = 64'h404FFFBFFFFFFFFA; + ReadData2E = 64'hBFABFFF000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC350000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3955951\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h403FFFFFBFBFFFFF; + ans = 64'h40401FFFDFDFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3956952\n"); + end + ReadData1E = 64'hBFFDFFFFFFF7FFFE; + ReadData2E = 64'h4010000800007FFF; + ReadData3E = 64'h43CEBEEBCF0F6625; + ans = 64'h43CEBEEBCF0F6625; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3957953\n"); + end + ReadData1E = 64'h209FFFE000FFFFFF; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3958954\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hBFFFFFFFBFFF7FFF; + ReadData3E = 64'h401ABB8F29F01F26; + ans = 64'h401CBB8F25F01726; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3959955\n"); + end + ReadData1E = 64'h34E00FFFFFFF7FFF; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h245FD0A764EC10A6; + ans = 64'hB4F00FFFFFFF7FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3960956\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hC0A84EF0CE64A95C; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3961957\n"); + end + ReadData1E = 64'h3F40000000001008; + ReadData2E = 64'h43F3DF8B9CCD3E9D; + ReadData3E = 64'hA16CF91978AF8FE9; + ans = 64'h4343DF8B9CCD5286; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3962958\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3963959\n"); + end + ReadData1E = 64'h3CA2C0399DDEA73B; + ReadData2E = 64'hB8000FFFFF800000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3964960\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hB81FF7E000000000; + ans = 64'h3FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3965961\n"); + end + ReadData1E = 64'hBD30FFFFFFFBFFFF; + ReadData2E = 64'h3F3FFFFFFFF82000; + ReadData3E = 64'h40600001000FFFFF; + ans = 64'h40600001000FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3966962\n"); + end + ReadData1E = 64'hC00FFFFFFFF83FFF; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'h435FFFFFFFF84001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3967963\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hB80FFFFF7FFFFFFD; + ReadData3E = 64'h4050000000800080; + ans = 64'h4050000000800080; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3968964\n"); + end + ReadData1E = 64'hBF8FF7FFFFFFFDFE; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'hC3FFBCDBD01885B6; + ans = 64'hC3FFBCCBD41885B6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3969965\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hFFFFFFFFFFFFFBF0; + ReadData3E = 64'hC010000000000001; + ans = 64'hFFFFFFFFFFFFFBF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3970966\n"); + end + ReadData1E = 64'h8C4F03E8133F62C7; + ReadData2E = 64'h3FF0003FFFFFFEFE; + ReadData3E = 64'h7FEFFE0010000000; + ans = 64'h7FEFFE0010000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3971967\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h7FCFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3972968\n"); + end + ReadData1E = 64'h43CFFFFFFE01FFFF; + ReadData2E = 64'h3FC00080007FFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h43A0007FFF80F805; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3973969\n"); + end + ReadData1E = 64'hBFD0000000000000; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h37E0000002000001; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3974970\n"); + end + ReadData1E = 64'h0C2FF7FFFFFFFFFE; + ReadData2E = 64'hBFCFFFFF000007FE; + ReadData3E = 64'h41CFFFFFFFFFFFFF; + ans = 64'h41CFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3975971\n"); + end + ReadData1E = 64'h47F0007FFFFF7FFF; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3976972\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h3F20000000100004; + ReadData3E = 64'hC34F00001FFFFFFF; + ans = 64'hC34F00001FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3977973\n"); + end + ReadData1E = 64'h3F2DD438D01B125D; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h43EFFFFFDFFFFFBF; + ans = 64'h43EFFFFFDFFFFFBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3978974\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h37FFFFFFFFF7FFEF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3979975\n"); + end + ReadData1E = 64'hBF802DC2BF7035B6; + ReadData2E = 64'h27E19314015B19B0; + ReadData3E = 64'h404FFFFFFFDFFEFF; + ans = 64'h404FFFFFFFDFFEFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3980976\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3981977\n"); + end + ReadData1E = 64'h3805DAEAB256B4C4; + ReadData2E = 64'h3FD0000000023FFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3982978\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'hC1D0000003DFFFFE; + ans = 64'hC1D0000003DFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3983979\n"); + end + ReadData1E = 64'hBE6FFFFFFF1FFFFE; + ReadData2E = 64'hFFEA55FC1237C607; + ReadData3E = 64'hC78FFBFFFFE00000; + ans = 64'h7E6A55FC117F6C21; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3984980\n"); + end + ReadData1E = 64'hB62FFFFFE3FFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3985981\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h4016718D9C393F43; + ReadData3E = 64'h4030000100100000; + ans = 64'h402D31D04C98D817; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3986982\n"); + end + ReadData1E = 64'hC3DFC07FFFFFFFFF; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'hC3DFFFEFFBFFFFFF; + ans = 64'hC3E7F017FDFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3987983\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h2560000021FFFFFF; + ReadData3E = 64'h8010000000000001; + ans = 64'hA540000022000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3988984\n"); + end + ReadData1E = 64'hB800000001FFFFEF; + ReadData2E = 64'h169705A6093AEF16; + ReadData3E = 64'hC03F71A698DAC454; + ans = 64'hC03F71A698DAC454; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3989985\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hBFD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3990986\n"); + end + ReadData1E = 64'h98D200000FFFFFFF; + ReadData2E = 64'h3CA00000100000FF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3991987\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h403007FFFFBFFFFF; + ans = 64'h402F8FFFFF7FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3992988\n"); + end + ReadData1E = 64'hB81F00000007FFFF; + ReadData2E = 64'hC3EFFF001FFFFFFE; + ReadData3E = 64'h402001FFFFFBFFFF; + ans = 64'h402001FFFFFBFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3993989\n"); + end + ReadData1E = 64'hC2CFFFE000000001; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hC2DFFFDFFFFFFFEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3994990\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h3FA000003FFEFFFF; + ReadData3E = 64'hFFFFFFFFFF700000; + ans = 64'hFFFFFFFFFF700000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3995991\n"); + end + ReadData1E = 64'h800FFFFFFFFFFDDF; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h3C9FFFFFFBFFFFFC; + ans = 64'h3C9FFFFFFBFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3996992\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h000201FFFFFFFFFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3997993\n"); + end + ReadData1E = 64'hBCA0003FFFFFFF80; + ReadData2E = 64'hB74FF777BD52D90F; + ReadData3E = 64'h43D007FFFFFEFFFF; + ans = 64'h43D007FFFFFEFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3998994\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"3999995\n"); + end + ReadData1E = 64'h7FD000000F000000; + ReadData2E = 64'h41C000FF7FFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4000996\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h30EA8DE4CBF18559; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4001997\n"); + end + ReadData1E = 64'h401FFFFFFFFFE080; + ReadData2E = 64'hC0A000007F800000; + ReadData3E = 64'hFFE3E5CB953D4DD6; + ans = 64'hFFE3E5CB953D4DD6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4002998\n"); + end + ReadData1E = 64'h68A020000007FFFE; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'h6C0020000007FFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4003999\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h3CDFFFFFFFFF0007; + ReadData3E = 64'h3FB000010000FFFF; + ans = 64'h3FB000010000FFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4005000\n"); + end + ReadData1E = 64'hBF7FFFFFFFDFFDFF; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'h3FE1FFFFFFFEFFFE; + ans = 64'hFF6FFFFFFFDFFE01; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4006001\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'hC020661FE3A34A9A; + ReadData3E = 64'h4000000000000001; + ans = 64'h4010330FF1D1A54E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4007002\n"); + end + ReadData1E = 64'h3FDFFFE03FFFFFFF; + ReadData2E = 64'hBA600007FFFFFFF7; + ReadData3E = 64'h30FFFFFFFFFFE000; + ans = 64'hBA4FFFF03FF01FED; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4008003\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4009004\n"); + end + ReadData1E = 64'h41B0000FFFFFFF7E; + ReadData2E = 64'h404516AF0149CAAF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h420516C417F8CB4D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4010005\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hC1CBFA0B2EB94CDD; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4011006\n"); + end + ReadData1E = 64'h434C00000003FFFF; + ReadData2E = 64'h801000000100003F; + ReadData3E = 64'h4043FFFEFFFFFFFE; + ans = 64'h4043FFFEFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4012007\n"); + end + ReadData1E = 64'hBFA4CE8BAE27A4DA; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4013008\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h342801FFFFFFFFFE; + ReadData3E = 64'hC02FFEFFFFFFFBFE; + ans = 64'hC02FFEFFFFFFFBFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4014009\n"); + end + ReadData1E = 64'hB20000FFFFF7FFFF; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h41D000400000FFFE; + ans = 64'h41D000400000FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4015010\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'hC05FFC00000FFFFE; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h403FBC0000100000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4016011\n"); + end + ReadData1E = 64'hBFDFC00000001000; + ReadData2E = 64'hC3D0FFFBFFFFFFFE; + ReadData3E = 64'h7FFFFFFEF7FFFFFF; + ans = 64'h7FFFFFFEF7FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4017012\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4018013\n"); + end + ReadData1E = 64'h463FFF8000003FFE; + ReadData2E = 64'h4052EED8C94C685D; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4019014\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFBC0000; + ans = 64'h7FEFFFFFFFBC0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4020015\n"); + end + ReadData1E = 64'hBD600040000001FF; + ReadData2E = 64'h41C2B8499A518549; + ReadData3E = 64'h3FF52369DF799C6E; + ans = 64'h3FF5223E5631E4EF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4021016\n"); + end + ReadData1E = 64'h431FFFFFFBE00000; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hC2FFFFFFFBDFFFF2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4022017\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'hBE8FDFFFFFFFFFFF; + ReadData3E = 64'h3E0FFFFF000001FF; + ans = 64'h3E702FFFFE000004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4023018\n"); + end + ReadData1E = 64'h40D08D069A6473B3; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hC7E0000008000010; + ans = 64'hC7E0000008000010; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4024019\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'hFFEFFFF200000000; + ReadData3E = 64'h0000000000000001; + ans = 64'h7FCFFFF200000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4025020\n"); + end + ReadData1E = 64'h43F000000001F000; + ReadData2E = 64'hC40FEFFFFF7FFFFF; + ReadData3E = 64'h3FDF8000000003FF; + ans = 64'hC80FEFFFFF83DE0F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4026021\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4027022\n"); + end + ReadData1E = 64'hBF7FFFFFF3FFFFFF; + ReadData2E = 64'h3CABE4F620E0BA0B; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4028023\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h41F0000010400000; + ans = 64'h41F0000010480000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4029024\n"); + end + ReadData1E = 64'hFFF000407FFFFFFE; + ReadData2E = 64'hC1DFFFFFFCFFFFFF; + ReadData3E = 64'hC3E55EBCA5EEB15B; + ans = 64'hFFF800407FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4030025\n"); + end + ReadData1E = 64'hC2F16C02F3FBE350; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h43016C02F3FBE350; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4031026\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'hC80FFE0002000000; + ReadData3E = 64'hC01218D54D45FE8F; + ans = 64'h47EFFE0002000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4032027\n"); + end + ReadData1E = 64'hFFFDFFFFDFFFFFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hB8069A3C06C5B34C; + ans = 64'hFFFDFFFFDFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4033028\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h55FFFFFFFEEFFFFE; + ReadData3E = 64'h4340000000000001; + ans = 64'hD5DFFFFFFEF00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4034029\n"); + end + ReadData1E = 64'h15FD55A4582CEEC6; + ReadData2E = 64'hEA0000007F800000; + ReadData3E = 64'hC035EACBE2C7848D; + ans = 64'hC03995808B05711A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4035030\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4036031\n"); + end + ReadData1E = 64'hBFAF4507AA72AD25; + ReadData2E = 64'h420FFFFFFFE0FFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC1CF4507AA146245; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4037032\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'hC01FFFFFFFFC07FE; + ans = 64'h431FFFFFFFFFFFE4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4038033\n"); + end + ReadData1E = 64'h3F04000000100000; + ReadData2E = 64'h3CAF02716A575398; + ReadData3E = 64'hBCAFFFFFFFFFFFD7; + ans = 64'hBCAFFFB279E475BF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4039034\n"); + end + ReadData1E = 64'hBFC0001FFFFFFFF8; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4040035\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'h3FC0001FFFDFFFFF; + ReadData3E = 64'h3FEFC208407824B1; + ans = 64'h3FEEC206407A24B1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4041036\n"); + end + ReadData1E = 64'hC1F361667418E67A; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h402DFFF800000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4042037\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'hB7E5B1D2133B58F6; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4043038\n"); + end + ReadData1E = 64'hBFB00000002000FE; + ReadData2E = 64'hC05F1652DC98152E; + ReadData3E = 64'h407FE00000000010; + ans = 64'h40802E2CA5B9AC90; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4044039\n"); + end + ReadData1E = 64'hBFD0000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4045040\n"); + end + ReadData1E = 64'hC07000000040FFFF; + ReadData2E = 64'hC0000FFFFFFDFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h40801000003F40FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4046041\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'hC03F04A97A7AA1F7; + ans = 64'hC03F04A97A7AA1F7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4047042\n"); + end + ReadData1E = 64'h37F1000000007FFE; + ReadData2E = 64'hB85007FFFFFFFFBE; + ReadData3E = 64'hBFB5000000000000; + ans = 64'hBFB5000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4048043\n"); + end + ReadData1E = 64'h380BFFFFC0000000; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4049044\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hC02FBFFFFFFFF800; + ReadData3E = 64'hC01000FFFFFBFFFF; + ans = 64'h400F7E000007F000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4050045\n"); + end + ReadData1E = 64'hC7F063501DB6DE83; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h3FD0000080FFFFFE; + ans = 64'h3FD0000080FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4051046\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hCD3000008FFFFFFF; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h4D2000008FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4052047\n"); + end + ReadData1E = 64'h41EFFFFFFC000006; + ReadData2E = 64'h71C017FFFFFFFFFF; + ReadData3E = 64'hC34690DDCC9E0269; + ans = 64'h73C017FFFDFD0002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4053048\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCB3FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4054049\n"); + end + ReadData1E = 64'h3FCFFFFFFEBFFFFF; + ReadData2E = 64'hBBFFEFFF7FFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4055050\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h434FFFFBFFFFFF80; + ans = 64'h434FFFFBFFFFFF80; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4056051\n"); + end + ReadData1E = 64'h4347FF42EF83BE2F; + ReadData2E = 64'hBFCF000000000200; + ReadData3E = 64'h34CFFFFFFFFFFFFE; + ans = 64'hC3273F48D807A1BD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4057052\n"); + end + ReadData1E = 64'hBB5FFBFFFFFFFDFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4058053\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hC72BF7FFFFFFFFFF; + ReadData3E = 64'h41EFFFFFFF80001F; + ans = 64'h471BF7FFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4059054\n"); + end + ReadData1E = 64'h3FEBFFFFFFFFDFFF; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'hC3D00040003FFFFF; + ans = 64'hC3D00040003FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4060055\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h3FCFFFFFC0007FFF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4061056\n"); + end + ReadData1E = 64'hBFD20763AA9DF455; + ReadData2E = 64'hC05FFFFFFFC007FE; + ReadData3E = 64'h3FD2088F35493553; + ans = 64'h40422B74C8E47C79; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4062057\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4063058\n"); + end + ReadData1E = 64'h432FFFF80003FFFF; + ReadData2E = 64'hE630889C054D1557; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hE9708897E3282517; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4064059\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hC3E1D9C63C2601D5; + ans = 64'hC3E1D9C63C2601D5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4065060\n"); + end + ReadData1E = 64'h273000000000008E; + ReadData2E = 64'hC1D000FFEFFFFFFE; + ReadData3E = 64'h40000400000000FF; + ans = 64'h40000400000000FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4066061\n"); + end + ReadData1E = 64'hC3DFFFFFF87FFFFF; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'hC3FFFFFFF87FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4067062\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hBFD00000000FFFFF; + ReadData3E = 64'h002EF9217050511C; + ans = 64'h3FC00000000FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4068063\n"); + end + ReadData1E = 64'hC22FFFFFFFFFFFC1; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'hC7F0003FFFE00000; + ans = 64'hC7F0003FFFE00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4069064\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h407FFFFFFFFFFEDF; + ReadData3E = 64'hC010000000000001; + ans = 64'hC0703FFFFFFFFF6F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4070065\n"); + end + ReadData1E = 64'h1C4FFFFF8000001E; + ReadData2E = 64'h001DBCBDBB072A5D; + ReadData3E = 64'h434F3170F38DC1D7; + ans = 64'h434F3170F38DC1D7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4071066\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hC32FFFFFFFFFFFEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4072067\n"); + end + ReadData1E = 64'h7FFFFC000000003E; + ReadData2E = 64'h37FFF00000008000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h7FFFFC000000003E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4073068\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h3F90008007FFFFFE; + ans = 64'hC33FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4074069\n"); + end + ReadData1E = 64'h6CA973D8B604D342; + ReadData2E = 64'hB2B521D0C56CC873; + ReadData3E = 64'h3FE7FF7FFFFFFFFF; + ans = 64'hDF70CEEBBCF73348; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4075070\n"); + end + ReadData1E = 64'h404003FFFFFFFE00; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4076071\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hC31000000007FDFF; + ReadData3E = 64'h404010000000001E; + ans = 64'h430000000007FEFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4077072\n"); + end + ReadData1E = 64'h7FF0000F7FFFFFFE; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hBE6D95F3908A0FBA; + ans = 64'h7FF8000F7FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4078073\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hBF80000006FFFFFE; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE02000000E0001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4079074\n"); + end + ReadData1E = 64'hC342000003FFFFFF; + ReadData2E = 64'h49F7FDFFFFFFFFFF; + ReadData3E = 64'h37F157D6D8179B6E; + ans = 64'hCD4AFDC005FF7FFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4080075\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4081076\n"); + end + ReadData1E = 64'hC3F5895EDEA1EDC8; + ReadData2E = 64'h3FCFFFFFBFFFFFEE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4082077\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hBD1000107FFFFFFF; + ans = 64'hBD1000107FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4083078\n"); + end + ReadData1E = 64'hD370000000040020; + ReadData2E = 64'hC7EFFFFFFFC00003; + ReadData3E = 64'h7FF00004001FFFFF; + ans = 64'h7FF80004001FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4084079\n"); + end + ReadData1E = 64'h26F01FFFFFF80000; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4085080\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hC070003FFFBFFFFF; + ReadData3E = 64'hC1C0000000800040; + ans = 64'hC1BFFFFF80FE0082; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4086081\n"); + end + ReadData1E = 64'hBFD03F342404643C; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'hBF9FFFFFFFFFFFFF; + ans = 64'hBF9FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4087082\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h3F500000400007FF; + ReadData3E = 64'h8010000000000001; + ans = 64'hBF400000400007FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4088083\n"); + end + ReadData1E = 64'h439FF7DFFFFFFFFF; + ReadData2E = 64'hC3C0020800000000; + ReadData3E = 64'h47E000000000027F; + ans = 64'h47DFC008221024FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4089084\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h3C9FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4090085\n"); + end + ReadData1E = 64'h002DFFFFFFFFFF7E; + ReadData2E = 64'h451FFFFFFFFFEFDE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4091086\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'hB800800000007FFE; + ans = 64'h3FC0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4092087\n"); + end + ReadData1E = 64'h41CD6D75D5E2312B; + ReadData2E = 64'hCC2FFFFFFFFDFFFB; + ReadData3E = 64'hDF440FFFFFFFFFFE; + ans = 64'hDF440FFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4093088\n"); + end + ReadData1E = 64'hBEAFFF7FFFFBFFFF; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD00001FFF80000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4094089\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h7FFE87E6E53C5196; + ReadData3E = 64'hC1EFFFFFFEEFFFFF; + ans = 64'h7FFE87E6E53C5196; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4095090\n"); + end + ReadData1E = 64'hC1C007FBFFFFFFFF; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h37E000000000100E; + ans = 64'h41C007FBFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4096091\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h3EF0000004000000; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4097092\n"); + end + ReadData1E = 64'hC03FE9931C8AD539; + ReadData2E = 64'h41DFFFFFFF000003; + ReadData3E = 64'hBC10000FBFFFFFFE; + ans = 64'hC22FE9931B8B88A3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4098093\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4099094\n"); + end + ReadData1E = 64'hA9327831ACE67A4B; + ReadData2E = 64'h407000007FFF7FFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4100095\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h2C21FFFFFFFFBFFF; + ans = 64'h3FEFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4101096\n"); + end + ReadData1E = 64'hC01000000001FFF6; + ReadData2E = 64'hBD20100000000200; + ReadData3E = 64'hC09FFEFFFFFFFEFF; + ans = 64'hC09FFEFFFFFFFEFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4102097\n"); + end + ReadData1E = 64'h41CFFFF00001FFFF; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'hC1EFFFF00001FFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4103098\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hB81FFE07FFFFFFFF; + ReadData3E = 64'h64DFDFFFFFFE0000; + ans = 64'h64DFDFFFFFFE0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4104099\n"); + end + ReadData1E = 64'h0C9FFFFE00000020; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'h37FFDFF7FFFFFFFE; + ans = 64'h37FFDFF7FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4105100\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hBFD1BAD46C9D305B; + ReadData3E = 64'h4000000000000001; + ans = 64'h40011BAD46C9D307; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4106101\n"); + end + ReadData1E = 64'hB8538D594DADB8AC; + ReadData2E = 64'hC34FFFFF7FFF7FFF; + ReadData3E = 64'hC3CFFDFFFFE00000; + ans = 64'hC3CFFDFFFFE00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4107102\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h432FFFFFFFFFFFF9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4108103\n"); + end + ReadData1E = 64'h403021236FA8E3F3; + ReadData2E = 64'h402F152C5E739B5D; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h406F558CE1327560; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4109104\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h37EFFF01FFFFFFFF; + ans = 64'h7FCFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4110105\n"); + end + ReadData1E = 64'hB0520000000003FF; + ReadData2E = 64'hB7EC552F671B5D24; + ReadData3E = 64'hBFE8418B2C12C9C7; + ans = 64'hBFE8418B2C12C9C7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4111106\n"); + end + ReadData1E = 64'h3FB8825C399621B2; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'hFFB8825C399621B1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4112107\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'h7FF003FFFFDFFFFF; + ReadData3E = 64'h3FCFFFBFFFFBFFFF; + ans = 64'h7FF803FFFFDFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4113108\n"); + end + ReadData1E = 64'h3FD03FFFFFFFFBFE; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h3F084BAB56F36E14; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4114109\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFF; + ReadData2E = 64'hC0100001FFFFF7FF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h3FFC0003FFFFEFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4115110\n"); + end + ReadData1E = 64'hFFDFFFFEFFFBFFFF; + ReadData2E = 64'h3E500004000000FF; + ReadData3E = 64'hBFC226A9D53D5DA8; + ans = 64'hFE4000037FFDE0FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4116111\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4117112\n"); + end + ReadData1E = 64'hC7EFCAEAE8D235F8; + ReadData2E = 64'h869D2C568FF1E3C4; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4118113\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'hC1D0000000003FF7; + ans = 64'hC1D0000000003FF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4119114\n"); + end + ReadData1E = 64'h405400001FFFFFFF; + ReadData2E = 64'h40D8000000000800; + ReadData3E = 64'hC3C28C530D6C0551; + ans = 64'hC3C28C530D6BF651; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4120115\n"); + end + ReadData1E = 64'hC150003FFFFFFFFB; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4121116\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'hB851FFFC00000000; + ReadData3E = 64'h3EEBFFFFFFFFFFEF; + ans = 64'h3EEBFFFFFFFFFFEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4122117\n"); + end + ReadData1E = 64'h381000001FF80000; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'hBFB0007FF0000000; + ans = 64'hBFB0007FF0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4123118\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h33B3FFFFFFBFFFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'hB3A3FFFFFFBFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4124119\n"); + end + ReadData1E = 64'hFFEEFFFFFFFFFFF7; + ReadData2E = 64'h43E0003FFFFEFFFF; + ReadData3E = 64'hB7F000001FDFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4125120\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hBFBFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4126121\n"); + end + ReadData1E = 64'hF32A3FED8BBDA62E; + ReadData2E = 64'h00157F2DAF38EC60; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4127122\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'h8DBFFFFFFFFFFFFB; + ans = 64'hBFCFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4128123\n"); + end + ReadData1E = 64'h3FB000001FFFFEFF; + ReadData2E = 64'hB80FFFFFFFFFFE0E; + ReadData3E = 64'hBFCFFFFF003FFFFE; + ans = 64'hBFCFFFFF003FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4129124\n"); + end + ReadData1E = 64'h40A96CFAA346226E; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h40996CFAA3462270; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4130125\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h0010000800400000; + ReadData3E = 64'hC00000800000FFFF; + ans = 64'hC00000800000FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4131126\n"); + end + ReadData1E = 64'hC0000000000003DE; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'hBFD00000000101FF; + ans = 64'hC00200000000241E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4132127\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'hC03F260D37E8A7F1; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000009; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4133128\n"); + end + ReadData1E = 64'hC023FFFFFFFFFFFC; + ReadData2E = 64'h380FFFDF00000000; + ReadData3E = 64'h41FFFC0000040000; + ans = 64'h41FFFC0000040000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4134129\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4135130\n"); + end + ReadData1E = 64'hA2800003FDFFFFFF; + ReadData2E = 64'hC0500000000FFFDF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4136131\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'hB81FF800000007FF; + ans = 64'hBFFFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4137132\n"); + end + ReadData1E = 64'h4020370882D3FF38; + ReadData2E = 64'hB5EDFFFFFFFFFFFF; + ReadData3E = 64'hBFCB7FE7329E38B4; + ans = 64'hBFCB7FE7329E38B4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4138133\n"); + end + ReadData1E = 64'hC4BFFFFFFDFFFF7F; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4139134\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h3FEFFFFFFF7FF000; + ReadData3E = 64'hCB4FFFEFFFFFFF00; + ans = 64'hCB4FFFEFFFFFFF00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4140135\n"); + end + ReadData1E = 64'hC1FFFFFFFFFFC000; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'hB7E566D707F635DF; + ans = 64'hC22FFFFFFFFFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4141136\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h3F27DC1324644D5F; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0005F704C9192; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4142137\n"); + end + ReadData1E = 64'h43EFFFDFFFFFF7FF; + ReadData2E = 64'hC3DFFFFFFFDFE000; + ReadData3E = 64'hC1DB09770E9F6894; + ans = 64'hC7DFFFDFFFDFD81F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4143138\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hC33FFFFFFFFFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4144139\n"); + end + ReadData1E = 64'h3FD2003FFFFFFFFE; + ReadData2E = 64'hF4FFF807FFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hF4E1FBC4700FFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4145140\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hC78FFFFF803FFFFF; + ans = 64'hFFD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4146141\n"); + end + ReadData1E = 64'h3FEFF83FFFFFFFFE; + ReadData2E = 64'h47F50DE2EFA8F7BF; + ReadData3E = 64'h3F8000000800003F; + ans = 64'h47F508C992B2ECD2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4147142\n"); + end + ReadData1E = 64'h8000000000020007; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h4010000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4148143\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'hC341A62DA35CCE20; + ReadData3E = 64'hC750000003FFFBFF; + ans = 64'hC750000003FFFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4149144\n"); + end + ReadData1E = 64'h0010000000000000; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h40EFFFBFC0000000; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4150145\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h407F22E1A6FD8B9B; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hC06F22E1A6FD8B99; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4151146\n"); + end + ReadData1E = 64'h2C5FFFFFFFFFFFFF; + ReadData2E = 64'hBCA54950D2D2EEDD; + ReadData3E = 64'h400F00000003FFFE; + ans = 64'h400F00000003FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4152147\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4153148\n"); + end + ReadData1E = 64'h3FC0003FFFFDFFFE; + ReadData2E = 64'h3D20000001FFFFDF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4154149\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'hFFE01000007FFFFF; + ans = 64'hFFE01000007FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4155150\n"); + end + ReadData1E = 64'h3F900000000007FF; + ReadData2E = 64'hC0D1961F63FADED4; + ReadData3E = 64'h802FFFFFFFDFBFFE; + ans = 64'hC071961F63FAE79E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4156151\n"); + end + ReadData1E = 64'h3F7FFDFFFBFFFFFF; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4157152\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'hC2500001FFFFFFE0; + ReadData3E = 64'h400F807FFFFFFFFF; + ans = 64'h424000020001F7E7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4158153\n"); + end + ReadData1E = 64'h3FEE56FFF061B00B; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'hC034E9F32215715C; + ans = 64'hC034E9F32215715C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4159154\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'hC1F0000800001FFF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4160155\n"); + end + ReadData1E = 64'hC1F3FFFDFFFFFFFF; + ReadData2E = 64'hC0371E001EE6DF3B; + ReadData3E = 64'h7FE6914803C2EA06; + ans = 64'h7FE6914803C2EA06; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4161156\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4162157\n"); + end + ReadData1E = 64'h3B0FB7F325C38D6C; + ReadData2E = 64'h001FFFFFFFFEF800; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4163158\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hC09FFFFFFC003FFF; + ans = 64'hC09FFEFFFC003FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4164159\n"); + end + ReadData1E = 64'hC0100000003FFFDF; + ReadData2E = 64'hFFE00FFFFFFFBFFF; + ReadData3E = 64'hBE0FFEFFFFFFC000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4165160\n"); + end + ReadData1E = 64'h43C00001000001FF; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h0010000000000000; + ans = 64'hC3C00001000001FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4166161\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h380B5A88DC4AE18E; + ReadData3E = 64'h479000002000FFFE; + ans = 64'h479000002000FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4167162\n"); + end + ReadData1E = 64'h388504AF7ABA5E83; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h3F2FFFF01FFFFFFF; + ans = 64'h3F2FFFF01FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4168163\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'hC7EFF7FFF8000000; + ReadData3E = 64'hC010000000000001; + ans = 64'h47DFF7FFF7FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4169164\n"); + end + ReadData1E = 64'h3FC5000000000000; + ReadData2E = 64'hB7E0FFFFFFFFFF00; + ReadData3E = 64'hB81000000008000F; + ans = 64'hB81059400008000A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4170165\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4021FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4171166\n"); + end + ReadData1E = 64'h7FDACC987335A2C6; + ReadData2E = 64'hFFF006FFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hFFF806FFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4172167\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hC00FF7EFFFFFFFFF; + ans = 64'hBFFFEFE000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4173168\n"); + end + ReadData1E = 64'hFFE00FFFFFFFEFFF; + ReadData2E = 64'hC1CFFF000000001F; + ReadData3E = 64'h47FFFFFFE0800000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4174169\n"); + end + ReadData1E = 64'h3FFFFFFFFFFFFFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4175170\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'hC2C000FFFFFFFEFF; + ReadData3E = 64'h4003C44904206680; + ans = 64'h42B0010000000177; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4176171\n"); + end + ReadData1E = 64'h5FB49AD9ADE5E24E; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h41D0002001FFFFFE; + ans = 64'hE3049AD9ADE5E24E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4177172\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'h41DF000000400000; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hC1CEFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4178173\n"); + end + ReadData1E = 64'hC80C9EA0AFC5165C; + ReadData2E = 64'h3CCFFFFFEFFFFBFF; + ReadData3E = 64'hBA2EB380FC428446; + ans = 64'hC4EC9EA0A175C26F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4179174\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h7FCFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4180175\n"); + end + ReadData1E = 64'h3CACF95557D31D55; + ReadData2E = 64'h4CD6C0DC2020EA7F; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4181176\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h800FFBFFE0000000; + ans = 64'h7FDFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4182177\n"); + end + ReadData1E = 64'h7FFFFFFFFFFFFDFF; + ReadData2E = 64'h4500000003FF7FFE; + ReadData3E = 64'hC01FFFFFFC01FFFF; + ans = 64'h7FFFFFFFFFFFFDFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4183178\n"); + end + ReadData1E = 64'h3E800100000003FE; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4184179\n"); + end + ReadData1E = 64'hBFDFFFFFFFFFFFFE; + ReadData2E = 64'hBF709CDB0F78C068; + ReadData3E = 64'h62D47F94B546DB69; + ans = 64'h62D47F94B546DB69; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4185180\n"); + end + ReadData1E = 64'hC03FFFFFDFFFFFFD; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h41FFC003FFFFFFFF; + ans = 64'h41FFC003FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4186181\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h3D00000007FFF7FF; + ReadData3E = 64'h8010000000000001; + ans = 64'hBCF0000007FFF7FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4187182\n"); + end + ReadData1E = 64'h401FFFFFFFF8007E; + ReadData2E = 64'h401950B7757DFBF8; + ReadData3E = 64'h41000000009FFFFF; + ans = 64'h410001950C17577A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4188183\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h0017FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4189184\n"); + end + ReadData1E = 64'hC02EFDFFFFFFFFFF; + ReadData2E = 64'hC1C03FFBFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h41FF79F040FFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4190185\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'hC3EFC000000007FF; + ans = 64'hC3EFC000000007FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4191186\n"); + end + ReadData1E = 64'h1AD5B91AD6A482EF; + ReadData2E = 64'hCE80001FF7FFFFFF; + ReadData3E = 64'hB9404000001FFFFF; + ans = 64'hB9404000001FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4192187\n"); + end + ReadData1E = 64'h402FFCFFFFFFFFFF; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000020; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4193188\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h241007FEFFFFFFFF; + ReadData3E = 64'h0010000000007000; + ans = 64'hA40007FEFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4194189\n"); + end + ReadData1E = 64'h403FFFE000000100; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'hC1DEFFFFFFFFEFFF; + ans = 64'hC1DEFFFFFFFFEFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4195190\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h0000000810000000; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4196191\n"); + end + ReadData1E = 64'h4010000400FFFFFF; + ReadData2E = 64'hBFCF7C0000000000; + ReadData3E = 64'hA6D437CF228EA114; + ans = 64'hBFEF7C07E0F7BFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4197192\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4198193\n"); + end + ReadData1E = 64'h7FFFFFFEFFFFFFFD; + ReadData2E = 64'hC7FFFDEFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h7FFFFFFEFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4199194\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'hC14FFFFF00000002; + ans = 64'hC14FFFFF20000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4200195\n"); + end + ReadData1E = 64'h801080000003FFFF; + ReadData2E = 64'h403FDFFFE0000000; + ReadData3E = 64'hB8152468D7B9309E; + ans = 64'hB8152468D7B9309E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4201196\n"); + end + ReadData1E = 64'hCEF5162CEC0CC4F1; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'hCEF5162CEC0CC4F1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4202197\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'hC7FC400000000000; + ReadData3E = 64'hC80BFFFFFFFFFFEF; + ans = 64'hC804EFFFFFFFFFEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4203198\n"); + end + ReadData1E = 64'hC3CFFFFF80000007; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'h458FFFFFFFFFFBFF; + ans = 64'h458FFFFFFBFFFC0F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4204199\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'hFFD007FDFFFFFFFE; + ReadData3E = 64'h4000000000000001; + ans = 64'h7FC007FDFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4205200\n"); + end + ReadData1E = 64'h7FD003F7FFFFFFFF; + ReadData2E = 64'h7FEC7FA950D578CA; + ReadData3E = 64'hBA0FFF7FFFFFDFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4206201\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC017FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4207202\n"); + end + ReadData1E = 64'hC140000000000030; + ReadData2E = 64'h403FFBFE00000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hC18FFBFE00000060; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4208203\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h40C34AD222A494DF; + ans = 64'h40C349D222A494DF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4209204\n"); + end + ReadData1E = 64'h40000008001FFFFE; + ReadData2E = 64'hBE503FFFFFFFFFFF; + ReadData3E = 64'h40501FFFFFBFFFFE; + ans = 64'h40501FFFFF9F7FEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4210205\n"); + end + ReadData1E = 64'hC000000000DFFFFF; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4211206\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h3CA0000005FFFFFE; + ReadData3E = 64'hC3E8C01DA9AA2B48; + ans = 64'hC3E8C01DA9AA2B48; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4212207\n"); + end + ReadData1E = 64'hBAEA0536ED7B0AAC; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h3810010000000FFF; + ans = 64'hBE4A0536ED7B0AAB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4213208\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h37F000000FFFEFFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4214209\n"); + end + ReadData1E = 64'h7FFFFFFF7FFFC000; + ReadData2E = 64'hFFFFFFFFFFFC000F; + ReadData3E = 64'hC0301000000003FE; + ans = 64'hFFFFFFFFFFFC000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4215210\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hFFDFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4216211\n"); + end + ReadData1E = 64'hBF5E5E6E5F03BFC9; + ReadData2E = 64'hDD6850FF0578B7E2; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4217212\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'hA4EFFFDFFFFF8000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4218213\n"); + end + ReadData1E = 64'h43287D01D3E29A0A; + ReadData2E = 64'h41AF0001FFFFFFFF; + ReadData3E = 64'h3F109BDFE2BD14AD; + ans = 64'h44E7B91B4D13A277; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4219214\n"); + end + ReadData1E = 64'h4800000000077FFE; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4220215\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h7FD56C61D3A5C7FA; + ReadData3E = 64'h3FE00807FFFFFFFE; + ans = 64'hFFC56C61D3A5C7FA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4221216\n"); + end + ReadData1E = 64'h581178EDE380CFBA; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h40000000100001FF; + ans = 64'h40000000100001FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4222217\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'hBEC0000000017FFE; + ReadData3E = 64'h0000000000000001; + ans = 64'h3EB0000000017FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4223218\n"); + end + ReadData1E = 64'h3FCAF7E72477A9E5; + ReadData2E = 64'h4760800800000000; + ReadData3E = 64'hC02FFFFFFFFFF7F7; + ans = 64'h473BCFB3D98EF970; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4224219\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h8007FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4225220\n"); + end + ReadData1E = 64'hC040000007FFFF7F; + ReadData2E = 64'h47FFFFFFFFFFF007; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC850000007FFF782; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4226221\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h434FFC0000001FFF; + ans = 64'h434FFC0000001FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4227222\n"); + end + ReadData1E = 64'hBF1EECFBCB9BD95A; + ReadData2E = 64'h3CAFFFC00007FFFF; + ReadData3E = 64'hC010000000100010; + ans = 64'hC010000000100010; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4228223\n"); + end + ReadData1E = 64'hC1ECF938909BFF73; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h3EACF938908BFF72; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4229224\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h3CFFFFFFFFC00080; + ReadData3E = 64'hB7FF0000000007FE; + ans = 64'hBCEFFFFFFFC00080; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4230225\n"); + end + ReadData1E = 64'h3FD473D1387B1803; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'hBD3D104F3747DC96; + ans = 64'hBFB473D1387B3515; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4231226\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'hFFEFFFFF80000006; + ReadData3E = 64'h4340000000000001; + ans = 64'h7FDFFFFF80000006; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4232227\n"); + end + ReadData1E = 64'h256E00000000FFFE; + ReadData2E = 64'h42AFFFE00000FFFF; + ReadData3E = 64'h380FFFFFFFFC0001; + ans = 64'h380FFFFFFFFC0001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4233228\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4234229\n"); + end + ReadData1E = 64'h3F70FC0000000000; + ReadData2E = 64'hB6A000007FFF8000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4235230\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'hB81FFFFFBE000000; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4236231\n"); + end + ReadData1E = 64'hC00814ED12BE10E7; + ReadData2E = 64'hBEFFFFFF00000800; + ReadData3E = 64'h406DFFFFFFFBFFFF; + ans = 64'h406E0000C0A36290; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4237232\n"); + end + ReadData1E = 64'h28A000001BFFFFFF; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4238233\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'hA46A7B6838F1777D; + ReadData3E = 64'h3F58F0228C1C4BA8; + ans = 64'h3F58F0228C1C4BA8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4239234\n"); + end + ReadData1E = 64'hB7E0000000000280; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h3FD008000000FFFF; + ans = 64'h3FD008000000FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4240235\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h3F5FFFFFBFFFFFEF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF003FFFFF80001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4241236\n"); + end + ReadData1E = 64'h3E6FFFFE40000000; + ReadData2E = 64'h43F1374699B8CCBC; + ReadData3E = 64'h38C00000000023FE; + ans = 64'h42713745A8B2F054; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4242237\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h400FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4243238\n"); + end + ReadData1E = 64'hCB4FFFD000000000; + ReadData2E = 64'h3FA00000000003FA; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hCAFFFFD0000007F4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4244239\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hC340FFFFFFF7FFFE; + ans = 64'hC340FFFFFFF7FFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4245240\n"); + end + ReadData1E = 64'h43F000000801FFFF; + ReadData2E = 64'h40000010FFFFFFFF; + ReadData3E = 64'h402FFFFFFFFE0100; + ans = 64'h4400001108020880; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4246241\n"); + end + ReadData1E = 64'hC02FFFDFFFFFFFFE; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h4010000000000000; + ans = 64'h437FFFE000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4247242\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'h4AE000000000008F; + ReadData3E = 64'h3FDFEFFF7FFFFFFF; + ans = 64'hCAD000000000008F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4248243\n"); + end + ReadData1E = 64'h3EE0000200800000; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h73B0BBFCE8674CF9; + ans = 64'h73B0BBFCE8674CF9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4249244\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'hC0D00000003C0000; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h40C00000003C0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4250245\n"); + end + ReadData1E = 64'h7FF000000DFFFFFF; + ReadData2E = 64'hD08003FFFFFFFFF8; + ReadData3E = 64'h47E0000800000FFE; + ans = 64'h7FF800000DFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4251246\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h7FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4252247\n"); + end + ReadData1E = 64'hBFE0000000200003; + ReadData2E = 64'hC35E8AF963BC9EBF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC3075069C064B468; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4253248\n"); + end + ReadData1E = 64'hBFE0000000000000; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'hBFFDEFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4254249\n"); + end + ReadData1E = 64'h428FFFFFFFFF001F; + ReadData2E = 64'h434000000017FFFE; + ReadData3E = 64'h41FFFF7FFFFFF000; + ans = 64'h45E000000017800E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4255250\n"); + end + ReadData1E = 64'h3E03B6F66B824C58; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4256251\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h44100FFFFFFFC000; + ReadData3E = 64'hC03FFFFFFFFFFCFF; + ans = 64'hC4000FFFFFFFC001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4257252\n"); + end + ReadData1E = 64'h74C8800000000000; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h4020003FF7FFFFFF; + ans = 64'h4020003FF7FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4258253\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'hC0738896B5E9988D; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4259254\n"); + end + ReadData1E = 64'hBE700000100FFFFE; + ReadData2E = 64'hC91800000000003F; + ReadData3E = 64'h59D0000008000007; + ans = 64'h59D0000008000007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4260255\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4261256\n"); + end + ReadData1E = 64'hC1300203FFFFFFFF; + ReadData2E = 64'h4B7FF46CE15A193A; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hCCBFF8736C117CD2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4262257\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'hB91A42B46343E365; + ans = 64'hBC90000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4263258\n"); + end + ReadData1E = 64'hBFBFFFFFFFC00001; + ReadData2E = 64'hC3F7D4219F77B453; + ReadData3E = 64'h520FE00000000000; + ans = 64'h520FE00000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4264259\n"); + end + ReadData1E = 64'h4000001DFFFFFFFF; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h0010000000000000; + ans = 64'h3FE0001DFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4265260\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'hB810300000000000; + ReadData3E = 64'hBD3040000001FFFE; + ans = 64'hBD3040000001FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4266261\n"); + end + ReadData1E = 64'hC015110A6809D0D4; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h271FFFFBBFFFFFFF; + ans = 64'hC005110A6809D0D3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4267262\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h40CFFFFFE000000E; + ReadData3E = 64'hC010000000000001; + ans = 64'hC0C001FFF0000008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4268263\n"); + end + ReadData1E = 64'hC02FFFBFFFFFFEFF; + ReadData2E = 64'h402000007FFFFFFF; + ReadData3E = 64'h40F03FFFFFFFFFFA; + ans = 64'h40F038000FC0007A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4269264\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401DFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4270265\n"); + end + ReadData1E = 64'h4E5FFFBFFFFFFFFC; + ReadData2E = 64'hC7FFFFFFFFFFE7FE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hD66FFFBFFFFFE7FA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4271266\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'hC1DFFFFFFFFFFFE0; + ans = 64'hC1E00000000FFFF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4272267\n"); + end + ReadData1E = 64'hD3C000000003F000; + ReadData2E = 64'h3FF0800001FFFFFF; + ReadData3E = 64'h43CFC01FFFFFFFFF; + ans = 64'hD3C0800002040F7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4273268\n"); + end + ReadData1E = 64'h801000000001FFF0; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4274269\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h312840DF48E9E267; + ReadData3E = 64'h403EFFFFFFFDFFFE; + ans = 64'h403EFFFFFFFDFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4275270\n"); + end + ReadData1E = 64'h800FFE00001FFFFF; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h42F06D13588206B4; + ans = 64'h42F06D13588206B4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4276271\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'hDAC00000010003FF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h5AB0000001000400; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4277272\n"); + end + ReadData1E = 64'h43EFFFFFFFEFDFFF; + ReadData2E = 64'hBBBFFFFDBFFFFFFF; + ReadData3E = 64'h41D01FFFFBFFFFFE; + ans = 64'h41D01FFFFBF7FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4278273\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hC008000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4279274\n"); + end + ReadData1E = 64'h3E04F6D44710FEDC; + ReadData2E = 64'h000FFFC200000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4280275\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h37E1FFFFF0000000; + ans = 64'hC330000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4281276\n"); + end + ReadData1E = 64'hB1F000010001FFFE; + ReadData2E = 64'hBFC004000000003E; + ReadData3E = 64'h3FB0004000001FFF; + ans = 64'h3FB0004000001FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4282277\n"); + end + ReadData1E = 64'hBF4E8157B59C1279; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'hC2AE8157B59C1678; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4283278\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h3D3FDFFF7FFFFFFE; + ReadData3E = 64'hBFD5C8666E149CB5; + ans = 64'hBFD5C8666E14A0B1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4284279\n"); + end + ReadData1E = 64'hB7EA540855DEC316; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hC1DDD793A4F9A5DE; + ans = 64'hF7DA540855DEC318; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4285280\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h3FFC0000FFFFFFFE; + ReadData3E = 64'h8010000000000001; + ans = 64'hBFEC000100000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4286281\n"); + end + ReadData1E = 64'hA61F700B023A38CC; + ReadData2E = 64'h37E5CE82AB871744; + ReadData3E = 64'hC000000700000000; + ans = 64'hC000000700000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4287282\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4288283\n"); + end + ReadData1E = 64'h3FFFFFFC00000100; + ReadData2E = 64'h44CBFFFFFFFEFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h44DBFFFC7FFF00DE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4289284\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h3F20000005FFFFFF; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4290285\n"); + end + ReadData1E = 64'hB81F6736E00F4FAB; + ReadData2E = 64'hC1D2ADFA0FC51A47; + ReadData3E = 64'h3FBFFFF7FFFFFFFB; + ans = 64'h3FBFFFF7FFFFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4291286\n"); + end + ReadData1E = 64'h801FFFBFFFFFFFDE; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4292287\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'hBFE74A59436B6EF3; + ReadData3E = 64'h4120FFFFFFF7FFFF; + ans = 64'h41210000BA4ACA1A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4293288\n"); + end + ReadData1E = 64'h3FE0003FFFFFE000; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h3A65799A02476A86; + ans = 64'h3A65799A02476A86; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4294289\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'hBCA000000803FFFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4295290\n"); + end + ReadData1E = 64'hBB4FFFFE00400000; + ReadData2E = 64'h370020000001FFFF; + ReadData3E = 64'hD8A0AF9D07838DB9; + ans = 64'hD8A0AF9D07838DB9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4296291\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4297292\n"); + end + ReadData1E = 64'hC18543C6824DBF17; + ReadData2E = 64'h4ECAE2E232AAB561; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hD061DDD6442CBF5F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4298293\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h401000FFFFFFFFF8; + ans = 64'h401000FFFFFFFFF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4299294\n"); + end + ReadData1E = 64'h3FFBFFFFFFFFEFFE; + ReadData2E = 64'hBFCFFF80FFFFFFFF; + ReadData3E = 64'h801FFFFFFF802000; + ans = 64'hBFDBFF90DFFFEFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4300295\n"); + end + ReadData1E = 64'h4273FFFFFFFFFDFF; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h8000000000000000; + ans = 64'hC253FFFFFFFFFE00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4301296\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h7FE030A6427DC44C; + ReadData3E = 64'h7AD000000007FFFC; + ans = 64'hFFD030A6427DC44D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4302297\n"); + end + ReadData1E = 64'hBE300000020003FF; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hBC60020000000002; + ans = 64'h3E20000000FFE3FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4303298\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h13E07FFFFFFFFFBF; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4304299\n"); + end + ReadData1E = 64'h3EEFE20000000000; + ReadData2E = 64'h41D000000077FFFF; + ReadData3E = 64'h401392FEBB2F448D; + ans = 64'h40CFE47260C684E7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4305300\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00BFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4306301\n"); + end + ReadData1E = 64'h3FEFFFFFC0000FFF; + ReadData2E = 64'h53EFFFFFFFBFBFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h53EFFFFFBFBFCFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4307302\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h7FF01000000FFFFF; + ans = 64'h7FF81000000FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4308303\n"); + end + ReadData1E = 64'h3D6FFFFFD7FFFFFF; + ReadData2E = 64'h801000000007FDFE; + ReadData3E = 64'hBFC03FFFFC000000; + ans = 64'hBFC03FFFFC000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4309304\n"); + end + ReadData1E = 64'h25400000800000FE; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4310305\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h31D004000003FFFF; + ReadData3E = 64'h4370000007FFBFFF; + ans = 64'h4370000007FFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4311306\n"); + end + ReadData1E = 64'h406FFFFFE000FFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hFFDFF0BD606E0E84; + ans = 64'hFFDFF0BD606E0E84; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4312307\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'h408F800003FFFFFE; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hC07F840004000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4313308\n"); + end + ReadData1E = 64'hC1CFFFFFFF6FFFFF; + ReadData2E = 64'h41DD1345B9A9E63B; + ReadData3E = 64'h3CA0000000040080; + ans = 64'hC3BD1345B9270F80; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4314309\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h4012000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4315310\n"); + end + ReadData1E = 64'hBF682BCCD8DE11F7; + ReadData2E = 64'h40810003FFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4316311\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h40100FFFFFFE0000; + ans = 64'h4330000000000006; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4317312\n"); + end + ReadData1E = 64'hB80000801FFFFFFF; + ReadData2E = 64'hC3FFFFFFFF7FFF00; + ReadData3E = 64'h41C007FFFFFFFFFD; + ans = 64'h41C007FFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4318313\n"); + end + ReadData1E = 64'h4800002000000007; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4319314\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'hC3D1FFFFFFFC0000; + ReadData3E = 64'h3FFFF80000FFFFFE; + ans = 64'h43C1FFFFFFFC0001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4320315\n"); + end + ReadData1E = 64'h7FF4790BC1B81536; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h3FE0080000000020; + ans = 64'h7FFC790BC1B81536; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4321316\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'hC0D0000000801FFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h40C0000000802000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4322317\n"); + end + ReadData1E = 64'h9C6FFFFFFF00007F; + ReadData2E = 64'hCF10000002000FFE; + ReadData3E = 64'hC1DFFFFF81FFFFFF; + ans = 64'hC1DFFFFF81FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4323318\n"); + end + ReadData1E = 64'hBFE0000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4324319\n"); + end + ReadData1E = 64'hBFF302032078F269; + ReadData2E = 64'hBEA6C7A63FFA41F1; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFF93C034AC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4325320\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h1DA002000FFFFFFF; + ans = 64'h1DA002000FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4326321\n"); + end + ReadData1E = 64'hDEF0000FEFFFFFFE; + ReadData2E = 64'h5AFFFDFFFFFFFFFE; + ReadData3E = 64'h498FFFFFFFFFCFFF; + ans = 64'hF9FFFE1FDE01FFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4327322\n"); + end + ReadData1E = 64'hC0B23EE9BD7A8F43; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4328323\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'hC7F020000000003F; + ReadData3E = 64'hAE98CE4A5050769C; + ans = 64'h47F020000000003E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4329324\n"); + end + ReadData1E = 64'h400FFFFFFFB80000; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'hC80FFFFDFFFFF7FF; + ans = 64'hC80FFFFDFFFFF7FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4330325\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h43AFFFFFFFFF0010; + ReadData3E = 64'h4340000000000001; + ans = 64'hC3AFBFFFFFFF000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4331326\n"); + end + ReadData1E = 64'h464FFFFFDFFFFFF0; + ReadData2E = 64'hC0000000000800FF; + ReadData3E = 64'h432FFFFFFDFFFFBF; + ans = 64'hC65FFFFFE01001EA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4332327\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4333328\n"); + end + ReadData1E = 64'hB80BAE21C8C06330; + ReadData2E = 64'hBF8000000100000F; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4334329\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'hB80FF00000000007; + ans = 64'hBFCFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4335330\n"); + end + ReadData1E = 64'h37F00008FFFFFFFF; + ReadData2E = 64'h3F40000FFDFFFFFF; + ReadData3E = 64'hBFA007FFFFFFFF7F; + ans = 64'hBFA007FFFFFFFF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4336331\n"); + end + ReadData1E = 64'h3FFFFF7FFFFFFFFC; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4337332\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'hBFEFFFE000000001; + ReadData3E = 64'hC3DFFFFFFFFEEFFF; + ans = 64'hC3DFFFFFFFFEEFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4338333\n"); + end + ReadData1E = 64'h3FFFFFFFFFFE7FFF; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h802000000000043E; + ans = 64'h3FEFFFFFFFFE8001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4339334\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h3550003FF7FFFFFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4340335\n"); + end + ReadData1E = 64'h3E00008000001FFF; + ReadData2E = 64'h0007BF23D38968B6; + ReadData3E = 64'hC03EBACB8C086935; + ans = 64'hC03EBACB8C086935; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4341336\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FEFFFFFFFFFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4342337\n"); + end + ReadData1E = 64'hC020FF7FFFFFFFFF; + ReadData2E = 64'h42EC75C39A2AB798; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC31E3C3C25B091BA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4343338\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hBFD0000FFFFDFFFF; + ans = 64'hC0020001FFFFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4344339\n"); + end + ReadData1E = 64'hC02FFFFFFFBBFFFF; + ReadData2E = 64'h4143CCE9C7DB596C; + ReadData3E = 64'hBCB0000004000001; + ans = 64'hC183CCE9C7B145FB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4345340\n"); + end + ReadData1E = 64'h801FFFFFFFFFFFF8; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4346341\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h4160100020000000; + ReadData3E = 64'h40DFFEFF7FFFFFFF; + ans = 64'hC1600000A03FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4347342\n"); + end + ReadData1E = 64'h40404000FFFFFFFF; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'hC01FFFFFFFF01FFF; + ans = 64'h405E80020000FDFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4348343\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'hC3CAAE03E58D725E; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h43CAAE03E58D725D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4349344\n"); + end + ReadData1E = 64'hC1DFFFFFFFFFFFFF; + ReadData2E = 64'hC0665144CB2E72C1; + ReadData3E = 64'hC1E0FFFFFFFFFFEF; + ans = 64'h42562F44CB2E72C0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4350345\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC33FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4351346\n"); + end + ReadData1E = 64'h44D00000001FFFBE; + ReadData2E = 64'hB7EFFFF003FFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4352347\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h41DFFFFFFFFFFF07; + ans = 64'hC34FFFFFBFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4353348\n"); + end + ReadData1E = 64'hD63CDC033F706C68; + ReadData2E = 64'h3FC7FF0000000000; + ReadData3E = 64'h7FEFFFFBFFF00000; + ans = 64'h7FEFFFFBFFF00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4354349\n"); + end + ReadData1E = 64'h3CAFE0001FFFFFFF; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h7C9FE00020000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4355350\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'hB7FFFFBBFFFFFFFF; + ReadData3E = 64'hBFECDDC9504179C6; + ans = 64'hBFECDDC9504179C6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4356351\n"); + end + ReadData1E = 64'h3F8015BCA3D07BE3; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h4E30000002FFFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4357352\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'hBFF04000000FFFFF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4358353\n"); + end + ReadData1E = 64'hBCB0000001BFFFFF; + ReadData2E = 64'hBFB1034B7228B19A; + ReadData3E = 64'h408DA2A29C714D64; + ans = 64'h408DA2A29C714D64; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4359354\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4360355\n"); + end + ReadData1E = 64'h402FE00000003FFF; + ReadData2E = 64'h41EFFFFFFEBFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h422FDFFFFEC57FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4361356\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hC07000004007FFFF; + ans = 64'hC07000004007FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4362357\n"); + end + ReadData1E = 64'h40C01E0000000000; + ReadData2E = 64'hC7FFFFFE00007FFF; + ReadData3E = 64'hC3400004000003FF; + ans = 64'hC8D01DFEFE204077; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4363358\n"); + end + ReadData1E = 64'hBF694134D535875A; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'h00100CA09A6A9AC4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4364359\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'hE58000027FFFFFFF; + ReadData3E = 64'h7FDFFFFFF7FFFFF0; + ans = 64'h7FDFFFFFF7FFFFF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4365360\n"); + end + ReadData1E = 64'hC26FFFFFF003FFFF; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'hBFC7FFFFFFFFFEFF; + ans = 64'hBFC7FFFFFFFFFEFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4366361\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'hC76FBFFFFFFFFF00; + ReadData3E = 64'hC010000000000001; + ans = 64'h476FBFFFFFFFFEFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4367362\n"); + end + ReadData1E = 64'h3FB704BE0C29E48B; + ReadData2E = 64'hBE1661BEAEB601D6; + ReadData3E = 64'h66BFFFFFFFFFEFE0; + ans = 64'h66BFFFFFFFFFEFE0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4368363\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4369364\n"); + end + ReadData1E = 64'hB49FDFFFF0000000; + ReadData2E = 64'hC028A297441821BB; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4370365\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h3815F8C9986A5124; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4371366\n"); + end + ReadData1E = 64'h43D00000007FFFFB; + ReadData2E = 64'h0006A189741D8DF4; + ReadData3E = 64'hBFCFFE0000020000; + ans = 64'hBFCFFE0000020000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4372367\n"); + end + ReadData1E = 64'h37A01FFFFFFFFE00; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4373368\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFE007FFE; + ReadData3E = 64'h43DFFFF800000000; + ans = 64'h43DFFFF800000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4374369\n"); + end + ReadData1E = 64'hFFE0007FFF7FFFFF; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h4410001000100000; + ans = 64'h7FE0007FFF7FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4375370\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h3E18000000000100; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FDFFFFFFE800002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4376371\n"); + end + ReadData1E = 64'h30FBCC15269CF4E9; + ReadData2E = 64'hC02FFFFE00000000; + ReadData3E = 64'h3EE8C64DE8D9069D; + ans = 64'h3EE8C64DE8D9069D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4377372\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h3FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4378373\n"); + end + ReadData1E = 64'h3D1CF7E8AB63A254; + ReadData2E = 64'hC7F0000000040001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4379374\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hC01FC20000000000; + ans = 64'hC017C20000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4380375\n"); + end + ReadData1E = 64'hC1DFFFFFFFF80400; + ReadData2E = 64'hC03000000000DFFF; + ReadData3E = 64'h402FFFFFFFFF6FFF; + ans = 64'h42200000001CE1FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4381376\n"); + end + ReadData1E = 64'h31AFFFFFFFBC0000; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4382377\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'hBFBFFFDFFFFFE000; + ReadData3E = 64'h7FFFFFFFFFFFFE10; + ans = 64'h7FFFFFFFFFFFFE10; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4383378\n"); + end + ReadData1E = 64'h455A58358ED945C4; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hC1EFF7EFFFFFFFFF; + ans = 64'hC58A58358ED945C3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4384379\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h7FEFFF7FFFFFDFFF; + ReadData3E = 64'h8010000000000001; + ans = 64'hFFEFFF7FFFFFDFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4385380\n"); + end + ReadData1E = 64'h198001000001FFFE; + ReadData2E = 64'h40620000000001FE; + ReadData3E = 64'h38032506FF1CC325; + ans = 64'h38032506FF1CC325; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4386381\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h434FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4387382\n"); + end + ReadData1E = 64'h40DEB2E52220191C; + ReadData2E = 64'hBFED52E1FF58FE1F; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hC0DC1FA2E0E6929B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4388383\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'hC01FFFFFFFFFFEC0; + ans = 64'h7FDFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4389384\n"); + end + ReadData1E = 64'h3FDFFFFFEFFFFFFE; + ReadData2E = 64'h463083FFFFFFFFFE; + ReadData3E = 64'hD4F0007FFFFDFFFE; + ans = 64'hD4F0007FFFFDFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4390385\n"); + end + ReadData1E = 64'h43F856A5096BFC0D; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4391386\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h3E47FFFFFFFF7FFE; + ReadData3E = 64'hB50001E000000000; + ans = 64'hBE47FFFFFFFF7FFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4392387\n"); + end + ReadData1E = 64'hC00FFFF8000001FF; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'hC7AFFFFFFFFFFFF0; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4393388\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFF; + ReadData2E = 64'h40110000000001FF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4394389\n"); + end + ReadData1E = 64'hBF1FFFFFFFF00800; + ReadData2E = 64'h7FF000000000080F; + ReadData3E = 64'hBF3FF00000000001; + ans = 64'h7FF800000000080F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4395390\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4396391\n"); + end + ReadData1E = 64'hBFF0100000080000; + ReadData2E = 64'hC34000001FFFFEFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h434010002027FEFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4397392\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h3FE18B3020076F8C; + ans = 64'h3FE18B3020076F8C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4398393\n"); + end + ReadData1E = 64'hB7EE4A557F907AB2; + ReadData2E = 64'hBFA572BFC6169F00; + ReadData3E = 64'hC80000007FDFFFFF; + ans = 64'hC80000007FDFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4399394\n"); + end + ReadData1E = 64'h409F7FFFFFFFFFFA; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'h00CF7FFFFFFFFFF9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4400395\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h09D900AA5DF24FB4; + ReadData3E = 64'h37FEA7D718C9CEC3; + ans = 64'h37FEA7D718C9CEC3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4401396\n"); + end + ReadData1E = 64'h4346993DE596C515; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'hC610000807FFFFFF; + ans = 64'hC610000807FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4402397\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'hC3C004000000000F; + ReadData3E = 64'h4000000000000001; + ans = 64'h43C004000000000E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4403398\n"); + end + ReadData1E = 64'h48001007FFFFFFFF; + ReadData2E = 64'hC40000400000007F; + ReadData3E = 64'hCE10021FFFFFFFFE; + ans = 64'hCE10022000101046; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4404399\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC010FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4405400\n"); + end + ReadData1E = 64'h58A04E67E94568D4; + ReadData2E = 64'hBFFE00000000FFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hD8AE9302D5632973; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4406401\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'h9C91002000000000; + ans = 64'hBFDFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4407402\n"); + end + ReadData1E = 64'h400FFFFFFF80003F; + ReadData2E = 64'h3FF0000FBFFFFFFE; + ReadData3E = 64'hFFEFFFFDFFFFFBFF; + ans = 64'hFFEFFFFDFFFFFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4408403\n"); + end + ReadData1E = 64'hC0C0000000000180; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4409404\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h48001FFFFFF80000; + ReadData3E = 64'hBCA8000000FFFFFF; + ans = 64'hC8001FFFFFF7FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4410405\n"); + end + ReadData1E = 64'hD4AFF7FFFFFFBFFF; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h41D0000100002000; + ans = 64'hD4AFF7FFFFFFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4411406\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'hB780400040000000; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4412407\n"); + end + ReadData1E = 64'hBFE000000008FFFE; + ReadData2E = 64'hB7F1FFFFFFFFDFFF; + ReadData3E = 64'hC7E65DC1BE4AC14E; + ans = 64'hC7E65DC1BE4AC14E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4413408\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hBFF7FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4414409\n"); + end + ReadData1E = 64'hC0604000001FFFFF; + ReadData2E = 64'hB8F00001FFDFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4415410\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'hC3F90C049A8CA28C; + ans = 64'hC3F90C049A8CA28C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4416411\n"); + end + ReadData1E = 64'h46D000000000DFFF; + ReadData2E = 64'h438001FFFFF7FFFF; + ReadData3E = 64'h56CFFFC0000001FF; + ans = 64'h56CFFFC0000001FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4417412\n"); + end + ReadData1E = 64'h3F368AA77D2D6879; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF005A2A9DF4B5A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4418413\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'hC35383D4A6966FD2; + ReadData3E = 64'hC3E00000000001DF; + ans = 64'hC3DFEC7C2B596D4E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4419414\n"); + end + ReadData1E = 64'h4260040000000080; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'hC3C6F6A6524755C4; + ans = 64'hC3C6F6A451C755C4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4420415\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h7FD400003FFFFFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'hFFD400003FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4421416\n"); + end + ReadData1E = 64'hC1C36928801AD73F; + ReadData2E = 64'hC3FBA7837397DAC8; + ReadData3E = 64'hBFF52630EF0AE24A; + ans = 64'h45D0C656B40F0498; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4422417\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4423418\n"); + end + ReadData1E = 64'hC010E6B37624175D; + ReadData2E = 64'hC14FFFFFFFF0000E; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h4170E6B3361BA40B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4424419\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h383FFFFFDFC00000; + ans = 64'hFFEFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4425420\n"); + end + ReadData1E = 64'hC3EFFDDFFFFFFFFF; + ReadData2E = 64'hC08F7FFFC0000000; + ReadData3E = 64'hC2AEFFFFFF800000; + ans = 64'h448F7DE83F883FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4426421\n"); + end + ReadData1E = 64'h41E000001000001F; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4427422\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h3FE0000010000040; + ReadData3E = 64'hC000104000000000; + ans = 64'hC004104004000010; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4428423\n"); + end + ReadData1E = 64'hB80E2135047E4DD6; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h400252B264C26621; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4429424\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h4D6F1FFFFFFFFFFF; + ReadData3E = 64'h4340000000000001; + ans = 64'hCD6F1FFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4430425\n"); + end + ReadData1E = 64'hC1EFFFFFFFFFFF3E; + ReadData2E = 64'hDDD491B691B94192; + ReadData3E = 64'hC7E4FA0D16D55831; + ans = 64'h5FD491B691B94115; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4431426\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4432427\n"); + end + ReadData1E = 64'h41BCDD705DC44760; + ReadData2E = 64'h37F88B1DB113ABE7; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4433428\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'hC66CE373FB15B472; + ans = 64'hC66CE373FB15B472; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4434429\n"); + end + ReadData1E = 64'hC1FE1A0A23C18FC5; + ReadData2E = 64'hC7EFFFFFEFE00000; + ReadData3E = 64'hC80010000003FFFF; + ans = 64'h49FE1A0A147650A9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4435430\n"); + end + ReadData1E = 64'hBFB080000000003F; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4436431\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'hBFEB34D9BAB597BB; + ReadData3E = 64'h802FFFFBFFFF0000; + ans = 64'h3FEB34D9BAB597B9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4437432\n"); + end + ReadData1E = 64'h47F0000101000000; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h3FAFFFF7FFFFDFFF; + ans = 64'hC4B0000100FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4438433\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'hC1EFFFFFFFFFFFFB; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h41EFFFFFFFDFFFF9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4439434\n"); + end + ReadData1E = 64'hC009C2B9147E606C; + ReadData2E = 64'h7FE0000002007FFF; + ReadData3E = 64'hBFA004001FFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4440435\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4003FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4441436\n"); + end + ReadData1E = 64'hC7F00008FFFFFFFF; + ReadData2E = 64'hC34FFFFF7BFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h4B500008BDFFDADE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4442437\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hC1D00007F7FFFFFF; + ans = 64'hC1D00007F7DFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4443438\n"); + end + ReadData1E = 64'h381000000004007F; + ReadData2E = 64'h43C00000000001FF; + ReadData3E = 64'h1ED8A27A3CAC41D3; + ans = 64'h3BE000000004027E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4444439\n"); + end + ReadData1E = 64'hBCAFFFFFF7BFFFFE; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4445440\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h3FDFFFFFDF000000; + ReadData3E = 64'h41C9D8C3A4B6FEBC; + ans = 64'h41C9D8C3A476FEBC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4446441\n"); + end + ReadData1E = 64'h47E008000000003E; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'hBF9096D128776797; + ans = 64'hC7E008000000003F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4447442\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h802098F50534E2A9; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4448443\n"); + end + ReadData1E = 64'h40AE000007FFFFFF; + ReadData2E = 64'hC0389DEB576907AB; + ReadData3E = 64'h464A75655E547326; + ans = 64'h464A75655E547326; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4449444\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4450445\n"); + end + ReadData1E = 64'hBEDFFFFFFF007FFF; + ReadData2E = 64'h3EC0010007FFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4451446\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h667F00000001FFFF; + ans = 64'h667F00000001FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4452447\n"); + end + ReadData1E = 64'hBFD000800000FFFF; + ReadData2E = 64'h4020000000007DFF; + ReadData3E = 64'h3F8FFFFF40000000; + ans = 64'hBFFFC1000182FC04; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4453448\n"); + end + ReadData1E = 64'hDE2FFFFFFFFDDFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h5E5FFFFFFFFDDFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4454449\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h41FE000001FFFFFF; + ReadData3E = 64'hC1F0000000001FFF; + ans = 64'hC207000001000FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4455450\n"); + end + ReadData1E = 64'hC00FFFFFC03FFFFF; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'hC0700000FFEFFFFE; + ans = 64'h435FFFFFC03FFFC1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4456451\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'hC020000002FFFFFF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4457452\n"); + end + ReadData1E = 64'h47F889B9E68F751A; + ReadData2E = 64'h801F89EA9342BA08; + ReadData3E = 64'hC80FFFF80001FFFF; + ans = 64'hC80FFFF80001FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4458453\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4459454\n"); + end + ReadData1E = 64'hBFCFFFFFF800001F; + ReadData2E = 64'hC8000000FFFBFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h47E00000FBFBFFCE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4460455\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h3809A6B1780FF272; + ans = 64'h7FEFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4461456\n"); + end + ReadData1E = 64'h56D2D7EA9A0475C5; + ReadData2E = 64'hC3E0000000000000; + ReadData3E = 64'hC0102000000001FF; + ans = 64'hDAC2D7EA9A0475C5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4462457\n"); + end + ReadData1E = 64'h35D000000040001F; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4463458\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFFE; + ReadData2E = 64'h7EB4010000000000; + ReadData3E = 64'h41CBC75B419EF338; + ans = 64'hFEB400FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4464459\n"); + end + ReadData1E = 64'hACCFFE000000001F; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h8020000000000000; + ans = 64'h8020000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4465460\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h000FBF7FFFFFFFFE; + ReadData3E = 64'hC010000000000001; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4466461\n"); + end + ReadData1E = 64'h3FB000100000003E; + ReadData2E = 64'hB80BDB7A06C286C7; + ReadData3E = 64'hC3FE00000001FFFF; + ans = 64'hC3FE00000001FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4467462\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4468463\n"); + end + ReadData1E = 64'h0018000000000010; + ReadData2E = 64'hC0300000007FFE00; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4469464\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'hC3F0000000040000; + ans = 64'hC3F0000000040000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4470465\n"); + end + ReadData1E = 64'hBF8F800000FFFFFE; + ReadData2E = 64'hBF6FFFEFFFFFFEFF; + ReadData3E = 64'hC010000400000100; + ans = 64'hC00FFFE8800FC100; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4471466\n"); + end + ReadData1E = 64'hC045A070C051A035; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4472467\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h41EF8001FFFFFFFF; + ReadData3E = 64'hC1E80000001FFFFF; + ans = 64'hC1FBC001000FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4473468\n"); + end + ReadData1E = 64'hC02FFFFFEFFFF7FF; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h40DBD5DC6F7C6341; + ans = 64'h40DBD5DC6F7C6341; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4474469\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h36FFFFFFFFFFEDFF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4475470\n"); + end + ReadData1E = 64'hB12FFFFFAFFFFFFF; + ReadData2E = 64'h41C5F8CE9AFD6525; + ReadData3E = 64'hFFDFFFFFE0007FFF; + ans = 64'hFFDFFFFFE0007FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4476471\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFF7FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4477472\n"); + end + ReadData1E = 64'hB7D7FFFFFFFFFFDF; + ReadData2E = 64'hBF910007FFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4478473\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'hB7C1FFFFFFFBFFFE; + ans = 64'hBFEFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4479474\n"); + end + ReadData1E = 64'hC1C1000100000000; + ReadData2E = 64'h41200000000041FF; + ReadData3E = 64'hBF4B329DD6620702; + ans = 64'hC2F100010000461F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4480475\n"); + end + ReadData1E = 64'hC490000000008001; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'hC000000000000000; + ans = 64'hC490000000008001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4481476\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h7EEFFFFFF03FFFFE; + ReadData3E = 64'h002926CD2A3E06B6; + ans = 64'hFEEFFFFFF03FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4482477\n"); + end + ReadData1E = 64'h4108EAA7A6F3FD0D; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hB7F0020000080000; + ans = 64'h4118EAA7A6F3FD0B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4483478\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h4030000000001FFF; + ReadData3E = 64'h8010000000000001; + ans = 64'hC030000000001FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4484479\n"); + end + ReadData1E = 64'h400FF5FFFFFFFFFF; + ReadData2E = 64'hC1CFFFFFFFFFF002; + ReadData3E = 64'hBFBFFFFFC0020000; + ans = 64'hC1EFF6000003F006; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4485480\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4486481\n"); + end + ReadData1E = 64'h123EFFFFFBFFFFFF; + ReadData2E = 64'h47E0000004800000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4487482\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hBA5FFF7FFFFFFDFE; + ans = 64'hC010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4488483\n"); + end + ReadData1E = 64'h41DFFFE000000007; + ReadData2E = 64'hC1FFFFFFF7F7FFFE; + ReadData3E = 64'h3E200017FFFFFFFE; + ans = 64'hC3EFFFDFF7F8080D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4489484\n"); + end + ReadData1E = 64'h43F612E1AEC388E1; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h474612E1AEC388E1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4490485\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h00191728A57EBE19; + ReadData3E = 64'hC03FFFFFFFFFFFEC; + ans = 64'hC03FFFFFFFFFFFEC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4491486\n"); + end + ReadData1E = 64'hC1C0000000FFE000; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'hBD2FFF800000FFFF; + ans = 64'hC520000000FFDFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4492487\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'hC8000200000003FF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4493488\n"); + end + ReadData1E = 64'h169FE00010000000; + ReadData2E = 64'h400E0000007FFFFF; + ReadData3E = 64'h3FC00000001FFFEF; + ans = 64'h3FC00000001FFFEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4494489\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'hFCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4495490\n"); + end + ReadData1E = 64'hB1FF7C6484763AFA; + ReadData2E = 64'hBFAFFFFFFFFF0000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4496491\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h37FFFFFFFFFF5FFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4497492\n"); + end + ReadData1E = 64'h2690000003FF7FFF; + ReadData2E = 64'h800176018AA96920; + ReadData3E = 64'h3FDFFFFFFFFFFBFC; + ans = 64'h3FDFFFFFFFFFFBFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4498493\n"); + end + ReadData1E = 64'h3034E744E09910C7; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4499494\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'hC80000000000080E; + ReadData3E = 64'h47B0400000001FFF; + ans = 64'h480082000000090E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4500495\n"); + end + ReadData1E = 64'h3F8FFFFFFFFFBFFB; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hB80E800000000000; + ans = 64'hB80E800000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4501496\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h402E000000100000; + ReadData3E = 64'h4000000000000001; + ans = 64'hC02A000000100000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4502497\n"); + end + ReadData1E = 64'h410FFFFFFFFF80FF; + ReadData2E = 64'h6A1FFE0000200000; + ReadData3E = 64'hBFDFF00000000200; + ans = 64'h6B3FFE00001F8107; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4503498\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4504499\n"); + end + ReadData1E = 64'h41C0A7009B81B7C3; + ReadData2E = 64'h3FC000000BFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h4190A700A7FEF836; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4505500\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h42EFBFFFFFC00000; + ans = 64'h42EFBFFFFFC00000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4506501\n"); + end + ReadData1E = 64'h416FFFFFFE000006; + ReadData2E = 64'hC02000000007DFFF; + ReadData3E = 64'hFFDFFFC0000003FE; + ans = 64'hFFDFFFC0000003FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4507502\n"); + end + ReadData1E = 64'h45DFFFFFF0000000; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'hC34003FFFFFE0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4508503\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h801FFDFFFFFFEFFF; + ReadData3E = 64'hBFD0000000001008; + ans = 64'hBFD0000000001008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4509504\n"); + end + ReadData1E = 64'h801A43C1073D2D87; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h8005E7D54E242BB9; + ans = 64'h0000A91AF3AB1FA9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4510505\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h7FDDCBD5F17B5ED3; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hFFDDCBD5F17B5ED3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4511506\n"); + end + ReadData1E = 64'hC19007FFFC000000; + ReadData2E = 64'h3FCF807FFFFFFFFE; + ReadData3E = 64'h7FD0043FFFFFFFFE; + ans = 64'h7FD0043FFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4512507\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4513508\n"); + end + ReadData1E = 64'h40300007FFFFBFFE; + ReadData2E = 64'hC7F00001FFFFFFFA; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4514509\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h3AF0010000000000; + ans = 64'h3FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4515510\n"); + end + ReadData1E = 64'hC1A07FFFFFFFFE00; + ReadData2E = 64'h4807FFFFFFFFF800; + ReadData3E = 64'h0006D6D9773733E8; + ans = 64'hC9B8BFFFFFFFF4C0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4516511\n"); + end + ReadData1E = 64'hBCA0000002000FFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4517512\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'hC00FFFFFFFFFFF1E; + ReadData3E = 64'h4010000000040800; + ans = 64'h40200000000203C8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4518513\n"); + end + ReadData1E = 64'hAE6E000000000FFE; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h3E5FBFFFFFFFFFF6; + ans = 64'h3E5FBFFFFFFFFFF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4519514\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'hC03FFFF00000007F; + ReadData3E = 64'h0000000000000001; + ans = 64'h403FFFF00000007F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4520515\n"); + end + ReadData1E = 64'h4170000000FFFFFC; + ReadData2E = 64'h43E0000FF7FFFFFE; + ReadData3E = 64'h002FF80000000040; + ans = 64'h4560000FF90000F9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4521516\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4522517\n"); + end + ReadData1E = 64'h408FFFFFFFFC003F; + ReadData2E = 64'hBFF0000000400003; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC0901000003E0022; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4523518\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'h381FFFFEFFC00000; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4524519\n"); + end + ReadData1E = 64'hC01000020000000F; + ReadData2E = 64'h3FD01E0000000000; + ReadData3E = 64'hB1BFFFFFFFFF7DFF; + ans = 64'hBFF01E0203C0000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4525520\n"); + end + ReadData1E = 64'h608000003FEFFFFE; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hE3D000003FEFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4526521\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h403000000020003F; + ReadData3E = 64'h3FE0010000000000; + ans = 64'hC02EFFF00040007E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4527522\n"); + end + ReadData1E = 64'h4030008000003FFF; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'hB810EADDEA941D3F; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4528523\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'h43496A6F09FEA870; + ReadData3E = 64'h4340000000000001; + ans = 64'hC332D4DE13FD50DE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4529524\n"); + end + ReadData1E = 64'h3E30004200000000; + ReadData2E = 64'h4000007FFFFFBFFF; + ReadData3E = 64'hC02000002000007E; + ans = 64'hC02000001FBFFD76; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4530525\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4531526\n"); + end + ReadData1E = 64'h4007F18FB227C058; + ReadData2E = 64'hC28DFFFFFFFEFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC2A67276B70483C5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4532527\n"); + end + ReadData1E = 64'hBFF0000000000000; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'hC02ABA26E1A3070A; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4533528\n"); + end + ReadData1E = 64'hBFD8705167D64512; + ReadData2E = 64'h7FDFFFFFFFFD7FFF; + ReadData3E = 64'hC01D56BAA2E4AF20; + ans = 64'hFFC8705167D45C4B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4534529\n"); + end + ReadData1E = 64'h47F2E47AD15B5022; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4535530\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hB490000023FFFFFF; + ReadData3E = 64'h41D889B0C7114D6E; + ans = 64'h41D889B0C7114D6E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4536531\n"); + end + ReadData1E = 64'hFFE00000007FFFF7; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'hBF7FFFFFFF000003; + ans = 64'hC0001000007F7FF5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4537532\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h47EFC01FFFFFFFFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hC7EFC02000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4538533\n"); + end + ReadData1E = 64'hD73000400000000F; + ReadData2E = 64'h4037A7686456BC32; + ReadData3E = 64'hBFCBFEFFFFFFFFFF; + ans = 64'hD777A7C701F84DA3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4539534\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4540535\n"); + end + ReadData1E = 64'hBFA01B132C0AE2CC; + ReadData2E = 64'h403FFE00007FFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hBFF01A117B188E6A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4541536\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h3FF0FFFFFFFF7FFF; + ans = 64'h3FF0FFFFFFFF7FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4542537\n"); + end + ReadData1E = 64'h406FFFFFC007FFFF; + ReadData2E = 64'hC01E000000000020; + ReadData3E = 64'h001FFFFFFFFFCFFF; + ans = 64'hC09DFFFFC407801F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4543538\n"); + end + ReadData1E = 64'hC1DFFFFFE0800000; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h4010000000000000; + ans = 64'hC1BFFFFFDC800000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4544539\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hBFCFFDFFFFFFFFF6; + ReadData3E = 64'h40BFE000000000FF; + ans = 64'h40BFE03FFC0000FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4545540\n"); + end + ReadData1E = 64'h0000480000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'hC03FFFFFFFFFFFFE; + ans = 64'hC03FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4546541\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h1475EB03D24F2915; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4547542\n"); + end + ReadData1E = 64'h67AFFFFFF8000006; + ReadData2E = 64'hF3016E70E2A6BD2F; + ReadData3E = 64'hC1EDDDF29E459B21; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4548543\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4549544\n"); + end + ReadData1E = 64'hC0EFFFBDFFFFFFFF; + ReadData2E = 64'h3F700007FFFFFBFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC35000000000003F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4550545\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'hBFE1F0BD1A62E681; + ans = 64'hBFF8F85E8D317343; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4551546\n"); + end + ReadData1E = 64'hBC40000F80000000; + ReadData2E = 64'hC01F7FFFDFFFFFFF; + ReadData3E = 64'hEFEFFFFFFF6FFFFE; + ans = 64'hEFEFFFFFFF6FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4552547\n"); + end + ReadData1E = 64'hC019D6133B098D97; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hC02AD6133B098D95; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4553548\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hBD3005FFFFFFFFFF; + ReadData3E = 64'h434FF8000FFFFFFF; + ans = 64'h434FF8000FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4554549\n"); + end + ReadData1E = 64'h41900000003FFFFC; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h40B000010000000F; + ans = 64'h41B000100040FFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4555550\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hC3C495BE86A1F685; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4556551\n"); + end + ReadData1E = 64'h41E01000000001FF; + ReadData2E = 64'h3F8309D64C6B89E2; + ReadData3E = 64'hC78FFFEFFFFFC000; + ans = 64'hC78FFFEFFFFFC000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4557552\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4558553\n"); + end + ReadData1E = 64'h9E10000003FFFF80; + ReadData2E = 64'h43E00000003FFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4559554\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h3FC1FFFFFFFFFFFC; + ans = 64'hC340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4560555\n"); + end + ReadData1E = 64'hBFE5709E6602A652; + ReadData2E = 64'h8000100001FFFFFE; + ReadData3E = 64'hB3B0BFFFFFFFFFFF; + ans = 64'hB3B0BFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4561556\n"); + end + ReadData1E = 64'hC3EFFFFFFFFC001F; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h0010000000000000; + ans = 64'hC74FFFFFFFFC001D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4562557\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hBF8FFFFFFF000000; + ReadData3E = 64'h3E800010000001FE; + ans = 64'h3F900007FF880001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4563558\n"); + end + ReadData1E = 64'h3FC07FFFFF800000; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hFFE8000003FFFFFE; + ans = 64'hFFE5F000040FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4564559\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h403FFFFC007FFFFE; + ReadData3E = 64'hC010000000000001; + ans = 64'hC041FFFE00400000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4565560\n"); + end + ReadData1E = 64'hBED00004001FFFFF; + ReadData2E = 64'hC02000001FFDFFFF; + ReadData3E = 64'h3620F19E1EB15937; + ans = 64'h3F000004201E07FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4566561\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4567562\n"); + end + ReadData1E = 64'h2DC0200FFFFFFFFF; + ReadData2E = 64'h4B7FFFFFFEFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4568563\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h401E00000003FFFF; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4569564\n"); + end + ReadData1E = 64'h380101FFFFFFFFFF; + ReadData2E = 64'h3FEFFBFFFFFFFFC0; + ReadData3E = 64'hFFE003FFFFBFFFFF; + ans = 64'hFFE003FFFFBFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4570565\n"); + end + ReadData1E = 64'hC807BE4B32EA0C78; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4571566\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hC0CFF3FFFFFFFFFF; + ReadData3E = 64'h7FE0000000087FFE; + ans = 64'h7FE0000000087FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4572567\n"); + end + ReadData1E = 64'hB81FFFEFE0000000; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h3FB000000000080F; + ans = 64'h3FB000000000080F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4573568\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h42BFFFFE00040000; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hC2BFFFFE0003FF82; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4574569\n"); + end + ReadData1E = 64'hC1D0000000084000; + ReadData2E = 64'h43400100000FFFFF; + ReadData3E = 64'hC0EFFFFF77FFFFFF; + ans = 64'hC520010000184083; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4575570\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4576571\n"); + end + ReadData1E = 64'hBFE0000000000077; + ReadData2E = 64'hFF000003FEFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4577572\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h41E00003FDFFFFFE; + ans = 64'h41E00003FDFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4578573\n"); + end + ReadData1E = 64'h3FA00007FFFFBFFF; + ReadData2E = 64'hB81010007FFFFFFF; + ReadData3E = 64'hBFC3FFFFFBFFFFFF; + ans = 64'hBFC3FFFFFBFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4579574\n"); + end + ReadData1E = 64'h3CAB281958748CCA; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4580575\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h43EA3E8A09EC3C01; + ReadData3E = 64'hC3D0087FFFFFFFFF; + ans = 64'hC3F1216504F61E01; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4581576\n"); + end + ReadData1E = 64'h41053FE0F984DAB0; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'h384FFFFF80001000; + ans = 64'hC0F53FE0F984DAB0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4582577\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hC340000003FFFFBF; + ReadData3E = 64'h8010000000000001; + ans = 64'h4340000003FFFFC0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4583578\n"); + end + ReadData1E = 64'hC01FFFFFFA000000; + ReadData2E = 64'hC34FE00FFFFFFFFE; + ReadData3E = 64'hC03FFBFF7FFFFFFE; + ans = 64'h437FE00FFA05FCFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4584579\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h3FF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4585580\n"); + end + ReadData1E = 64'hFFE07FFBFFFFFFFF; + ReadData2E = 64'h5026589203BB88D1; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4586581\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h400E55065FED576F; + ans = 64'h40172A832FF6ABB8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4587582\n"); + end + ReadData1E = 64'h402008000000001F; + ReadData2E = 64'hC3EDE0135AFA7D54; + ReadData3E = 64'hC03000000007FFBF; + ans = 64'hC41DEF0364A7FACD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4588583\n"); + end + ReadData1E = 64'hC430001FFFC00000; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h4440001FFFC00001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4589584\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h41D0010000020000; + ReadData3E = 64'hB4F00000BFFFFFFF; + ans = 64'hC1D0010000020001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4590585\n"); + end + ReadData1E = 64'hBFB0000240000000; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hBF9FFFF0000003FF; + ans = 64'h3FCC00067FFFFF7E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4591586\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hB8004000000001FF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4592587\n"); + end + ReadData1E = 64'hC0500000001FFFFD; + ReadData2E = 64'h401FFFFFFFF80010; + ReadData3E = 64'h401FFFFFFDFFFFFB; + ans = 64'hC07F80000040000A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4593588\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4594589\n"); + end + ReadData1E = 64'hC000000000000043; + ReadData2E = 64'h800FBFFFFFFEFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4595590\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'hB7E0000000001BFE; + ans = 64'h4340000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4596591\n"); + end + ReadData1E = 64'h400FF00000001FFF; + ReadData2E = 64'hBFBFFFF0001FFFFF; + ReadData3E = 64'hC3E000000000FFFD; + ans = 64'hC3E000000000FFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4597592\n"); + end + ReadData1E = 64'h43DFFFFC00000003; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4598593\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'h7FFFFC00001FFFFF; + ReadData3E = 64'hC80FDFFFFF000000; + ans = 64'h7FFFFC00001FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4599594\n"); + end + ReadData1E = 64'hC3C00000000003F7; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'hC3DB54C01D3A9C8B; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4600595\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hC06FC000000003FE; + ReadData3E = 64'h4000000000000001; + ans = 64'h4070000000000200; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4601596\n"); + end + ReadData1E = 64'hC037FFFFFDFFFFFF; + ReadData2E = 64'h43D000007FFFEFFF; + ReadData3E = 64'h3FE000000000002F; + ans = 64'hC4180000BDFFE7ED; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4602597\n"); + end + ReadData1E = 64'hBFF0000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4603598\n"); + end + ReadData1E = 64'h46A2977646BF8310; + ReadData2E = 64'h37E007FFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h3E92A0C201E2E2CF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4604599\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'hBA4FFFFFC00FFFFF; + ans = 64'hBA4FFFFFC00FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4605600\n"); + end + ReadData1E = 64'h763FE003FFFFFFFE; + ReadData2E = 64'h8BE9BBE2E8537044; + ReadData3E = 64'h3F8453FAE7560C96; + ans = 64'hC239A22A3CE77752; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4606601\n"); + end + ReadData1E = 64'h405FFFFFFDBFFFFF; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4607602\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h458000000000005F; + ReadData3E = 64'h400F0000003FFFFE; + ans = 64'hC59000000000005E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4608603\n"); + end + ReadData1E = 64'h7FEFFEFFFFFFF7FF; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'h001FFFBFFFFFFFC0; + ans = 64'h401FFEFFFFFFF7FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4609604\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'hFFD3EFFFFFFFFFFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h7FE3EFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4610605\n"); + end + ReadData1E = 64'hBFE4F7A2F6810DB1; + ReadData2E = 64'hB10D783D6093F157; + ReadData3E = 64'h87F004000001FFFF; + ans = 64'h31034F3489D7D6DC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4611606\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4612607\n"); + end + ReadData1E = 64'hC3CD4822EDBEEB29; + ReadData2E = 64'h222FF7FFFFFFFFFA; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4613608\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h3FC2549C06C8D852; + ans = 64'hBFD6D5B1FC9B93D6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4614609\n"); + end + ReadData1E = 64'h3FD7E573833AF646; + ReadData2E = 64'hBFCFC642F60F4A84; + ReadData3E = 64'h3E3FA47835B51FC0; + ans = 64'hBFB7BA5583363510; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4615610\n"); + end + ReadData1E = 64'h3F70003FFFFFFFFF; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0080020000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4616611\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h48079BBB4E1B00C2; + ReadData3E = 64'h3FCFFFFF00010000; + ans = 64'hC8179BBB4E1B00C1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4617612\n"); + end + ReadData1E = 64'hE09E76D0D7B4EE72; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h3F900FFF7FFFFFFF; + ans = 64'hE08E76D0D7B4EE74; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4618613\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'hC80FFFFFFF004000; + ReadData3E = 64'h0000000000000001; + ans = 64'h481FFFFFFF003FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4619614\n"); + end + ReadData1E = 64'h802FFFFFFFFFBFEF; + ReadData2E = 64'h41E0400000800000; + ReadData3E = 64'h47E003FFFFFFFFFA; + ans = 64'h47E003FFFFFFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4620615\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4621616\n"); + end + ReadData1E = 64'hB7EFFF8400000000; + ReadData2E = 64'h43C01FFFFFFFFFBF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4622617\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'hBFF020000000000F; + ans = 64'hC014080000000003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4623618\n"); + end + ReadData1E = 64'h8010000000001FFA; + ReadData2E = 64'h001C11CF503C5AD0; + ReadData3E = 64'hC03FFFFEFFFEFFFE; + ans = 64'hC03FFFFEFFFEFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4624619\n"); + end + ReadData1E = 64'h403007FFFFFFFE00; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h405007FFFFFFFDFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4625620\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'hBFC0000000000010; + ReadData3E = 64'h3CF000000080000E; + ans = 64'h3FD0000000000050; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4626621\n"); + end + ReadData1E = 64'hFFDFFFFFFF800003; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hC290000080000002; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4627622\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'hBFFEEFFFFFFFFFFE; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4628623\n"); + end + ReadData1E = 64'h480F7FF7FFFFFFFE; + ReadData2E = 64'h41D0400007FFFFFF; + ReadData3E = 64'hC12F7FFFFDFFFFFF; + ans = 64'h49EFFDF7EFBFFBFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4629624\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC35FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4630625\n"); + end + ReadData1E = 64'h7FEFFFFFBFFF0000; + ReadData2E = 64'h3FF7CFEBB53F65A8; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4631626\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'hB68FFFFFFFFF0100; + ans = 64'hC35FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4632627\n"); + end + ReadData1E = 64'hC0300000FFFFFFFF; + ReadData2E = 64'h326000001FFFEFFF; + ReadData3E = 64'hA5F80000003FFFFF; + ans = 64'hB2A000011FFFF1FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4633628\n"); + end + ReadData1E = 64'hB7F7543072627727; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4634629\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'hC28C000000000007; + ReadData3E = 64'h151FFFFC00010000; + ans = 64'h429C000000000006; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4635630\n"); + end + ReadData1E = 64'hC11FFF0000007FFE; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h7FF03FFFFF7FFFFF; + ans = 64'h7FF83FFFFF7FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4636631\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h37F0000001001000; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4637632\n"); + end + ReadData1E = 64'h3FFFF80007FFFFFF; + ReadData2E = 64'hBD705739D7845E82; + ReadData3E = 64'h3FBFFFFFFFFFDFDF; + ans = 64'h3FBFFFFFFFFDD57A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4638633\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4639634\n"); + end + ReadData1E = 64'h000000000000023F; + ReadData2E = 64'hC8902000000000FE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h86021BF00000011D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4640635\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hC0AFEFFFFFFFE000; + ans = 64'hC0AFEFFFFFFFE000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4641636\n"); + end + ReadData1E = 64'hC1E138D93ED532A0; + ReadData2E = 64'h3DEFFFFF000FFFFF; + ReadData3E = 64'hC3DFFFFFFFFFDDFE; + ans = 64'hC3DFFFFFFFFFDDFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4642637\n"); + end + ReadData1E = 64'hC00FFFFFFCFFFFFE; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4643638\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h37E00080FFFFFFFF; + ReadData3E = 64'hC01FFFFFFF000003; + ans = 64'hC01FFFFFFF000003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4644639\n"); + end + ReadData1E = 64'h43F3EC2004B7BCB5; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'hBFFA75F0B3990DC0; + ans = 64'hBFFA75F0B3990DC0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4645640\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h3FF56917BD75748A; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hC0056917BD757489; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4646641\n"); + end + ReadData1E = 64'h7FF001001FFFFFFF; + ReadData2E = 64'hC0169AEE2419FEE1; + ReadData3E = 64'h7B62000000000000; + ans = 64'h7FF801001FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4647642\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h3CAFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4648643\n"); + end + ReadData1E = 64'h3FAEE1CE01EE193F; + ReadData2E = 64'hBFD0000000FFFFDF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4649644\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'hBF8FFFFFBFDFFFFF; + ans = 64'h3FEF800001007FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4650645\n"); + end + ReadData1E = 64'h43DFFFE0000001FF; + ReadData2E = 64'hBFA000000017FFFF; + ReadData3E = 64'h43EFFFFFFFCFFFFF; + ans = 64'h43EF80007FCF3FF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4651646\n"); + end + ReadData1E = 64'hBCA818D5A35D04EA; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4652647\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h48D00FFF7FFFFFFE; + ReadData3E = 64'h3FEFFFFFFFFFE007; + ans = 64'hC8E00FFF7FFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4653648\n"); + end + ReadData1E = 64'hB7F10DFCCE2D7BFB; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h800EFFFFFFBFFFFF; + ans = 64'h37F10DFCCE2D7BFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4654649\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h31AFFFE7FFFFFFFF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4655650\n"); + end + ReadData1E = 64'h3F5D7F1EF3D53DA5; + ReadData2E = 64'h3F80000000043FFE; + ReadData3E = 64'h47E000000000000F; + ans = 64'h47E000000000000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4656651\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4657652\n"); + end + ReadData1E = 64'h4D37BCC51F3BF385; + ReadData2E = 64'h38200001FFFFFFE0; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4567BCC816D4973D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4658653\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hBF200FFFFFFF8000; + ans = 64'h400FFFBFC0000003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4659654\n"); + end + ReadData1E = 64'h43C002000007FFFF; + ReadData2E = 64'h00117F19C7220E49; + ReadData3E = 64'h3FBFFFFFFFC01FFE; + ans = 64'h3FBFFFFFFFC01FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4660655\n"); + end + ReadData1E = 64'h80200000101FFFFF; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h0010000000000000; + ans = 64'h00420000101FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4661656\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h4800001FFFFFFFC0; + ReadData3E = 64'hD270007DFFFFFFFF; + ans = 64'hD270007DFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4662657\n"); + end + ReadData1E = 64'h001000000011FFFE; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'h41FF8793E88BA892; + ans = 64'h41FF8793E88BA892; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4663658\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h480F377E0B42B874; + ReadData3E = 64'hC010000000000001; + ans = 64'hC81F377E0B42B873; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4664659\n"); + end + ReadData1E = 64'h409000000000000B; + ReadData2E = 64'hBE3C4A82A2D0DC40; + ReadData3E = 64'h28BBFFFFFFFFFFEF; + ans = 64'hBEDC4A82A2D0DC53; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4665660\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4360000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4666661\n"); + end + ReadData1E = 64'hC0A0007FFFFFFFF7; + ReadData2E = 64'h37E0000000001FFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4667662\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'h3CDFFFFFFFFFFFFA; + ans = 64'h7FEFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4668663\n"); + end + ReadData1E = 64'hC01AD12814387F1F; + ReadData2E = 64'hC0C0004001FFFFFF; + ReadData3E = 64'hC020FFFF00000000; + ans = 64'h40EAD0835C42F502; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4669664\n"); + end + ReadData1E = 64'hC1DAD2DF32276BBF; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4670665\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'hC80FD80000000000; + ReadData3E = 64'h8015EAC8FF796F2F; + ans = 64'h481FD7FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4671666\n"); + end + ReadData1E = 64'h3DFFEFFFFFFFFDFF; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'hCE3FFFBBFFFFFFFF; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4672667\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFF; + ReadData2E = 64'h7FFFFFFBFE000000; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h7FFFFFFBFE000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4673668\n"); + end + ReadData1E = 64'h3FF3872EACAE1013; + ReadData2E = 64'hBFCFFFF807FFFFFF; + ReadData3E = 64'h1FA8B33D1826BA32; + ans = 64'hBFD38729CFC43092; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4674669\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4675670\n"); + end + ReadData1E = 64'hB21FFFFFFFFFFFFB; + ReadData2E = 64'hB80FFF7FFFFFFFF8; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4676671\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h267FFFFFFFFFFFC3; + ans = 64'h267FFFFFFFFFFFC3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4677672\n"); + end + ReadData1E = 64'h383FFFEBFFFFFFFF; + ReadData2E = 64'hBFE0000001FDFFFF; + ReadData3E = 64'hC03F7FFFFFBFFFFE; + ans = 64'hC03F7FFFFFBFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4678673\n"); + end + ReadData1E = 64'hFFF000200001FFFF; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'hFFF800200001FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4679674\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'hC0E7B8B79B4E7B42; + ReadData3E = 64'h0021000000000100; + ans = 64'h40F7B8B79B4E7B41; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4680675\n"); + end + ReadData1E = 64'h3FE000000080000E; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'hC1CC22DE133CE270; + ans = 64'hC1CC22DE133CE270; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4681676\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'hC7F3FFFFFEFFFFFE; + ReadData3E = 64'h8010000000000001; + ans = 64'h4803FFFFFEFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4682677\n"); + end + ReadData1E = 64'h3FE75C0AA7C7E67E; + ReadData2E = 64'h0E2FFF8000003FFF; + ReadData3E = 64'h47FFFFFFFFC00FFF; + ans = 64'h47FFFFFFFFC00FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4683678\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4684679\n"); + end + ReadData1E = 64'hC7F003C000000000; + ReadData2E = 64'hE6500000081FFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h6E5003C00821E77E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4685680\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hC01BFFFFFFF7FFFF; + ans = 64'hC01FFFFFFFF7FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4686681\n"); + end + ReadData1E = 64'h3C8332AE742CCF9F; + ReadData2E = 64'hC1C1E412D4A03E71; + ReadData3E = 64'h4FE4000000008000; + ans = 64'h4FE4000000008000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4687682\n"); + end + ReadData1E = 64'hC98FFFFFFF800002; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hC98FFFFFFF800001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4688683\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h3CD0020002000000; + ReadData3E = 64'h3FFFFC0000010000; + ans = 64'h3FFFFC000000FFF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4689684\n"); + end + ReadData1E = 64'h3FDFFFFFFFFF8002; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'h3E9FFFFFF0040000; + ans = 64'h3FE00000FFFFBF81; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4690685\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'hC7FFFFFFC001FFFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4691686\n"); + end + ReadData1E = 64'hC1A1007FFFFFFFFE; + ReadData2E = 64'hC346BB4514645575; + ReadData3E = 64'hB7FFFF800000001E; + ans = 64'h44F827AF3FD33DEC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4692687\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4693688\n"); + end + ReadData1E = 64'hBEBFFF000000003F; + ReadData2E = 64'hB7F001FFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4694689\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'hBFD007FFBFFFFFFF; + ans = 64'hC020803FFDFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4695690\n"); + end + ReadData1E = 64'hA50BA3902419AB87; + ReadData2E = 64'hBFA0400000000004; + ReadData3E = 64'hB817286EF287580E; + ans = 64'hB817286EF287580E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4696691\n"); + end + ReadData1E = 64'hFFD001FFFFFFFBFF; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h8000000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4697692\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h3810000000000000; + ReadData3E = 64'hC00000013FFFFFFF; + ans = 64'hC00000013FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4698693\n"); + end + ReadData1E = 64'hC1C106238C7409D3; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h402BEE7BF1343F28; + ans = 64'hC51106238C7409D3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4699694\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h802FF80008000000; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4700695\n"); + end + ReadData1E = 64'hC0AFFFFFFF80001F; + ReadData2E = 64'hBFC3DB71CABEEFB9; + ReadData3E = 64'hBF300FFFFC000000; + ans = 64'h4083DB7149EF8225; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4701696\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC35FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4702697\n"); + end + ReadData1E = 64'hC0201FFFFFF7FFFF; + ReadData2E = 64'h393000021FFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hB96020022437FFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4703698\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h3D30040000200000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4704699\n"); + end + ReadData1E = 64'h40B0001FFFFFFEFF; + ReadData2E = 64'hBF9F8007FFFFFFFF; + ReadData3E = 64'hC03FFFFFE000FFFE; + ans = 64'hC063C0237C081F02; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4705700\n"); + end + ReadData1E = 64'h3FBEFFFFFFEFFFFF; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'hC340000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4706701\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h7FD00000001BFFFF; + ReadData3E = 64'hC3E5851E7FAFD8FE; + ans = 64'hFFE00000001BFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4707702\n"); + end + ReadData1E = 64'h40E000000001DFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hB81000000FFFFDFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4708703\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h43CFFFFFF81FFFFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hC3DFFFFFF81FFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4709704\n"); + end + ReadData1E = 64'h3FC000007BFFFFFF; + ReadData2E = 64'h929000003FFFFFFF; + ReadData3E = 64'hBF4FFFFFFFCFFFFE; + ans = 64'hBF4FFFFFFFCFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4710705\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4711706\n"); + end + ReadData1E = 64'hB8BEFFFFFBFFFFFF; + ReadData2E = 64'h7FFF3F1327BD971C; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FFF3F1327BD971C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4712707\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h381FFFFF80001FFE; + ans = 64'h381FFFFF80001FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4713708\n"); + end + ReadData1E = 64'hB9A0001000080000; + ReadData2E = 64'h7FD4DEB5C756CEAE; + ReadData3E = 64'hC800200000000003; + ans = 64'hF984DECAA6170560; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4714709\n"); + end + ReadData1E = 64'hC1F7FFFFDFFFFFFF; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF00000BFFFFF00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4715710\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h37E000000100003E; + ans = 64'hC00FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4716711\n"); + end + ReadData1E = 64'hBF6FFFFFFFFF9000; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'hBEF000005FFFFFFE; + ans = 64'hBEF000005FFFFEFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4717712\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h8020004000000002; + ReadData3E = 64'h0000000000000001; + ans = 64'h0030004000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4718713\n"); + end + ReadData1E = 64'h002FFFFFBFFFFFE0; + ReadData2E = 64'hC05FF80001FFFFFF; + ReadData3E = 64'h3F90000000000000; + ans = 64'h3F90000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4719714\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h3FEFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4720715\n"); + end + ReadData1E = 64'h47F0001FFFF7FFFF; + ReadData2E = 64'h4070083FFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h487008601077FBDE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4721716\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h8023C3F577584957; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4722717\n"); + end + ReadData1E = 64'h47FFFFFF7FFFFFFC; + ReadData2E = 64'hC3DFC0001FFFFFFF; + ReadData3E = 64'hC01FFFFC0000000E; + ans = 64'hCBEFBFFFA0FFFF7B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4723718\n"); + end + ReadData1E = 64'h405000007FDFFFFE; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hC05000007FDFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4724719\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'h41F0FFFFFFDFFFFF; + ReadData3E = 64'hC8DD7222C0338CD9; + ans = 64'hC8DD7222C0338CD9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4725720\n"); + end + ReadData1E = 64'h5C673B16EF07A46D; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h43FD000000000000; + ans = 64'hDC773B16EF07A46C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4726721\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'hFFFFFFFFFFFFFF76; + ReadData3E = 64'h4340000000000001; + ans = 64'hFFFFFFFFFFFFFF76; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4727722\n"); + end + ReadData1E = 64'hC0252B8F5C404829; + ReadData2E = 64'hB81FFFDFBFFFFFFE; + ReadData3E = 64'hC3DFFFFFFDFFFF7F; + ans = 64'hC3DFFFFFFDFFFF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4728723\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4729724\n"); + end + ReadData1E = 64'h428407F58BF938E8; + ReadData2E = 64'h41F75F1A1302898F; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h448D4280DFE0FDD0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4730725\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'hA5E38431FB21D835; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4731726\n"); + end + ReadData1E = 64'h3FDFFFFC00000400; + ReadData2E = 64'h4431000FFFFFFFFF; + ReadData3E = 64'h3810000001FFFFF7; + ans = 64'h4421000DDFFE021F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4732727\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFF9FF; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFFFFFFFFFFFF9FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4733728\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'hFFFFFFFFFFFFEF00; + ReadData3E = 64'h480C65EA379E4396; + ans = 64'hFFFFFFFFFFFFEF00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4734729\n"); + end + ReadData1E = 64'hC030000000800007; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h3C2FFFFBFFFFBFFF; + ans = 64'h4380000000800008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4735730\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'hBCABFFFFFFFFFFBF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFEFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4736731\n"); + end + ReadData1E = 64'h8005CEE6CC465C4B; + ReadData2E = 64'h41C0000000400007; + ReadData3E = 64'hBFFFFFFFFF80007F; + ans = 64'hBFFFFFFFFF80007F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4737732\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4738733\n"); + end + ReadData1E = 64'h41D20000000007FE; + ReadData2E = 64'h801FFF8FFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h8201FFC1002007FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4739734\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h002C002000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4740735\n"); + end + ReadData1E = 64'h380D4E8DA05C11B6; + ReadData2E = 64'h3400000000007DFF; + ReadData3E = 64'hC160000003FFFFFC; + ans = 64'hC160000003FFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4741736\n"); + end + ReadData1E = 64'hBFC90D55B13808AA; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4742737\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFFE; + ReadData2E = 64'hBFB0008003FFFFFF; + ReadData3E = 64'h402FFFFFFFFFC01F; + ans = 64'h403020010007E00F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4743738\n"); + end + ReadData1E = 64'hB7EFFFFEFFFFC000; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h07D0000000000FF8; + ans = 64'h07D0000000000FF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4744739\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h000FF78000000000; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4745740\n"); + end + ReadData1E = 64'h3FF0003FBFFFFFFE; + ReadData2E = 64'hB5FE000001000000; + ReadData3E = 64'hC3F000000F7FFFFE; + ans = 64'hC3F000000F7FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4746741\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4747742\n"); + end + ReadData1E = 64'hD2CFFDFFFFFFFDFE; + ReadData2E = 64'h69AFFFFF7BFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hFC8FFDFF7C083DFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4748743\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'hC01FFF8000004000; + ans = 64'hC01FFF8000004000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4749744\n"); + end + ReadData1E = 64'h41C07FFFFFFFFC00; + ReadData2E = 64'hC3DFFFFEFFFFFE00; + ReadData3E = 64'h3E4FFFFF80000000; + ans = 64'hC5B07FFF7BFFFAF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4750745\n"); + end + ReadData1E = 64'hBFFFFFFFFFFF77FF; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4751746\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h3F5400D0967E54EB; + ReadData3E = 64'hC31FE0000003FFFF; + ans = 64'hC31FE0000003FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4752747\n"); + end + ReadData1E = 64'hBFDFFFFF0003FFFF; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h2471EFFFFFFFFFFE; + ans = 64'hBFBFFFFF0003FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4753748\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'hC13503A5C06B25FB; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4754749\n"); + end + ReadData1E = 64'h61D3FFFFFDFFFFFF; + ReadData2E = 64'h3FF5EC2E96D886BD; + ReadData3E = 64'h0023FB177A28CD8C; + ans = 64'h61DB673A39D12298; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4755750\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4756751\n"); + end + ReadData1E = 64'hBF40000002000000; + ReadData2E = 64'hBEC7A507DE22C1B6; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h40000000002F4A0F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4757752\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h240FFFFFFFFFE7FF; + ans = 64'hBFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4758753\n"); + end + ReadData1E = 64'hB7EFC00800000000; + ReadData2E = 64'hC1C00000FFFFC000; + ReadData3E = 64'h403FFFFFFF8001FE; + ans = 64'h403FFFFFFF8001FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4759754\n"); + end + ReadData1E = 64'h461FFE0000000000; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'h461FFE0000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4760755\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h402FFFFFFFFFF008; + ReadData3E = 64'hCF4D775D604535F3; + ans = 64'hCF4D775D604535F3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4761756\n"); + end + ReadData1E = 64'h43EF4FC412B525C1; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hC02FFFFFEFFFFFFF; + ans = 64'h43FF4FC412B525BF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4762757\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'hC1DFC000000FFFFE; + ReadData3E = 64'hC010000000000001; + ans = 64'h41EFBFFFFF8FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4763758\n"); + end + ReadData1E = 64'h3FCEFFFFFFFFE000; + ReadData2E = 64'h2F9CED3E51F9B7D0; + ReadData3E = 64'hBFE2580BA528C44A; + ans = 64'hBFE2580BA528C44A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4764759\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h0000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4765760\n"); + end + ReadData1E = 64'hB13000080000FFFF; + ReadData2E = 64'h405008003FFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4766761\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h41ED9029B266C5A1; + ans = 64'h41ED9029B166C5A1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4767762\n"); + end + ReadData1E = 64'h261FFFF800003FFE; + ReadData2E = 64'hDBC0000000100040; + ReadData3E = 64'hC3EC000000003FFF; + ans = 64'hC3EC000000203FF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4768763\n"); + end + ReadData1E = 64'hC1493F981FA25124; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4769764\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h3FCE000FFFFFFFFF; + ReadData3E = 64'h401003FFFFFFFFFE; + ans = 64'h400C47FDFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4770765\n"); + end + ReadData1E = 64'hC02FFFFFF800003E; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000080001; + ans = 64'hC38FFFFFF800003D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4771766\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h43F00001FFFFFFFA; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hC4000001FFFFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4772767\n"); + end + ReadData1E = 64'h41F969FCD636908A; + ReadData2E = 64'h43F0000080000007; + ReadData3E = 64'hC03A13EBB3A9E519; + ans = 64'h45F969FDA1867747; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4773768\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4774769\n"); + end + ReadData1E = 64'hBFC5C19E6EC19227; + ReadData2E = 64'hFFF3FFFFFFFBFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4775770\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h7FD0001000003FFF; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4776771\n"); + end + ReadData1E = 64'hFFFFFEFFFFFFFFF7; + ReadData2E = 64'hBFF07FFFFFFFFFE0; + ReadData3E = 64'hBFDF0B9D31CDF296; + ans = 64'hFFFFFEFFFFFFFFF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4777772\n"); + end + ReadData1E = 64'hFFDE1DA7A73DA159; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4778773\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'hC4A0000001000080; + ReadData3E = 64'hBE758969D4184D75; + ans = 64'h44B0000001000080; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4779774\n"); + end + ReadData1E = 64'h3EAF7BFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hCDEFFFFFBFFFFFEF; + ans = 64'hCDEFFFFFBFFFFFEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4780775\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h472D024CEA3B27B2; + ReadData3E = 64'h8010000000000001; + ans = 64'hC73D024CEA3B27B2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4781776\n"); + end + ReadData1E = 64'h403F00000007FFFE; + ReadData2E = 64'hC000003FDFFFFFFF; + ReadData3E = 64'h400FFFFDFC000000; + ans = 64'hC04D007BE248001C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4782777\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h0037FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4783778\n"); + end + ReadData1E = 64'h0ECFC00007FFFFFF; + ReadData2E = 64'hB7EFFF0003FFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4784779\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'hC0403FFFFFFFFF80; + ans = 64'hC0403FFFFFFFFF80; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4785780\n"); + end + ReadData1E = 64'hBFF43FFFFFFFFFFF; + ReadData2E = 64'hBFF057FC23A4BF39; + ReadData3E = 64'h001000000400001E; + ans = 64'h3FF4AF5B1D1C8203; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4786781\n"); + end + ReadData1E = 64'h4022D91FA4184952; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FCFFFFFFFFFFFB5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4787782\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h7FF40A19FD7ED330; + ReadData3E = 64'hC7F81FFFFFFFFFFE; + ans = 64'h7FFC0A19FD7ED330; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4788783\n"); + end + ReadData1E = 64'h41C1A2AC03AEFE57; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h3F5FF81FFFFFFFFF; + ans = 64'hC1A1A2AC03ADFE97; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4789784\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'hDEDFFFFF803FFFFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4790785\n"); + end + ReadData1E = 64'h7FF1261755179CB6; + ReadData2E = 64'hC03FF80000000003; + ReadData3E = 64'hC1F0000000000000; + ans = 64'h7FF9261755179CB6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4791786\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4792787\n"); + end + ReadData1E = 64'hB81FFFFFFFFFF7F0; + ReadData2E = 64'h3B1F5B8C208F2C74; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4793788\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h3FB0008007FFFFFF; + ans = 64'h40008004003FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4794789\n"); + end + ReadData1E = 64'hDB5FFBFFFFFFFFFF; + ReadData2E = 64'h401FFFFFFFFFF7FF; + ReadData3E = 64'h402FFFC0000003FE; + ans = 64'hDB8FFBFFFFFFF7FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4795790\n"); + end + ReadData1E = 64'hBFF0000000003FEE; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'h4000000000003FED; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4796791\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h7FE9D625D7F2EE96; + ReadData3E = 64'h380FFEFFFFFFC000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4797792\n"); + end + ReadData1E = 64'hFFD03FFFFFFFFEFE; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hC3FF800000000010; + ans = 64'h7FE03FFFFFFFFEFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4798793\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'hC03FFFF00000000F; + ReadData3E = 64'h4000000000000001; + ans = 64'h40507FF800000008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4799794\n"); + end + ReadData1E = 64'h41E3FFFEFFFFFFFF; + ReadData2E = 64'h43EFFFFF00007FFE; + ReadData3E = 64'h402FFF001FFFFFFF; + ans = 64'h45E3FFFE600057FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4800795\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h4010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4801796\n"); + end + ReadData1E = 64'hC1F1FFBFFFFFFFFE; + ReadData2E = 64'hFFF6E8FDB1D59A05; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hFFFEE8FDB1D59A05; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4802797\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'h43E008003FFFFFFE; + ans = 64'h43E008003FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4803798\n"); + end + ReadData1E = 64'h3FEFFFFFFFFC3FFF; + ReadData2E = 64'hBE20000000FFFBFE; + ReadData3E = 64'hC02FFFFFFFF88000; + ans = 64'hC030000000044000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4804799\n"); + end + ReadData1E = 64'h3FBFC3F28591BA3D; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'hC341FC3F28591BA4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4805800\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'h402D38EDAE9AE102; + ReadData3E = 64'h7FDDB35AB833C723; + ans = 64'h7FDDB35AB833C723; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4806801\n"); + end + ReadData1E = 64'h41EFFFFFBFFFDFFF; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'hBBF0000003F80000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4807802\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'hC1D23FF3FBB4B6C8; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h41E23FF3FBACB6C8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4808803\n"); + end + ReadData1E = 64'h001FFFFF70000000; + ReadData2E = 64'hC030001FF7FFFFFF; + ReadData3E = 64'h3F1E000000200000; + ans = 64'h3F1E000000200000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4809804\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4810805\n"); + end + ReadData1E = 64'h47ED4AE945957E89; + ReadData2E = 64'h7FEC7AF0B6B324D4; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4811806\n"); + end + ReadData1E = 64'hC000000000000000; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'hC06BFFFFFFFFFFFD; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4812807\n"); + end + ReadData1E = 64'h4C8CEB0E34E47D5D; + ReadData2E = 64'h3EAD1C3EF7480AEA; + ReadData3E = 64'hC3403FFFFFFF7FFF; + ans = 64'h4B4A4E8B7340506A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4813808\n"); + end + ReadData1E = 64'h41C000010000FFFE; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4814809\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hC01FFFFFFFFDF800; + ReadData3E = 64'h41E00000000400FF; + ans = 64'h41E00000020400FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4815810\n"); + end + ReadData1E = 64'h40000000000000FF; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'hB7F8966A836FA116; + ans = 64'hB7F8966A836FA116; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4816811\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hB81000001F7FFFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h382000001F800000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4817812\n"); + end + ReadData1E = 64'h0000000000001FFF; + ReadData2E = 64'hB7E83071BC11CF35; + ReadData3E = 64'h3FD00000000000A0; + ans = 64'h3FD00000000000A0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4818813\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h8033FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4819814\n"); + end + ReadData1E = 64'hC7FFE00000000000; + ReadData2E = 64'h422FFFF7DFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hCA3FDFF7E81FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4820815\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h000000000FBFFFFE; + ans = 64'hBCC0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4821816\n"); + end + ReadData1E = 64'h403DFFFFFFF7FFFF; + ReadData2E = 64'hAD23DDBBC06728A8; + ReadData3E = 64'h40000001FFFEFFFF; + ans = 64'h40000001FFFEFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4822817\n"); + end + ReadData1E = 64'h5267262CE885F879; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h5247262CE885F879; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4823818\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hC7F000FFFBFFFFFF; + ReadData3E = 64'h4019AE3A47EBAC82; + ans = 64'h480000FFFC000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4824819\n"); + end + ReadData1E = 64'hBFD0020000003FFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hC0D726F90B2EADAE; + ans = 64'hC0D727010C2EADAE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4825820\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h44BBFFFFFFFFFFFF; + ReadData3E = 64'h4340000000000001; + ans = 64'hC4CBFFFFF0000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4826821\n"); + end + ReadData1E = 64'hBF006E4BB2F18EF1; + ReadData2E = 64'h56CFFFFFC000007E; + ReadData3E = 64'hC08D7AA2CF4036DE; + ans = 64'hD5E06E4B9214F7CC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4827822\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4828823\n"); + end + ReadData1E = 64'h40479E1F0D286AE5; + ReadData2E = 64'h43C9404BCB5379F8; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h4422A2FC710B5C50; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4829824\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h8015B40DF40436BF; + ans = 64'hC000000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4830825\n"); + end + ReadData1E = 64'hDFFCA0904E2E362A; + ReadData2E = 64'hB84FFFC00000FFFE; + ReadData3E = 64'h56F7AA9F2011C020; + ans = 64'h585CA0576BB8FB51; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4831826\n"); + end + ReadData1E = 64'hC060002001FFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4832827\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hBDDFFFF7FFFFFFF8; + ReadData3E = 64'h4AEA7CFCA0BA2584; + ans = 64'h4AEA7CFCA0BA2584; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4833828\n"); + end + ReadData1E = 64'h5783FFFFFFFFFC00; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFF007FFFFFF; + ans = 64'h57A3FFFFFFFFFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4834829\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hA55B0BC2F36A19CD; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4835830\n"); + end + ReadData1E = 64'hC14E07FFFFFFFFFF; + ReadData2E = 64'h47EFFFFFFFF7FFFD; + ReadData3E = 64'h7FF01FFFF0000000; + ans = 64'h7FF81FFFF0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4836831\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hC02C000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4837832\n"); + end + ReadData1E = 64'hBFD0000100000080; + ReadData2E = 64'h78500007FEFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hF8300008FF00806F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4838833\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'hB7FFFE0000000000; + ans = 64'hC350000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4839834\n"); + end + ReadData1E = 64'h3A0FFFFFF8003FFF; + ReadData2E = 64'h800F800000100000; + ReadData3E = 64'hC1CE1B66C7032268; + ans = 64'hC1CE1B66C7032268; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4840835\n"); + end + ReadData1E = 64'h41C4002000000000; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'h4524001FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4841836\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h43F0000000007DFF; + ReadData3E = 64'hC11FFFFFFFFFF83F; + ans = 64'hC400000000007E40; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4842837\n"); + end + ReadData1E = 64'h38F0000002010000; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'hB9A4EBF792FCF281; + ans = 64'h78E0000002010001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4843838\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h43CFFFBFFF7FFFFF; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hC3DFFFBFFF800001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4844839\n"); + end + ReadData1E = 64'h001103B6EC17C637; + ReadData2E = 64'h46B000003FFFFFF0; + ReadData3E = 64'h41CDFDFFFFFFFFFF; + ans = 64'h41CDFDFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4845840\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4846841\n"); + end + ReadData1E = 64'hC1C5A103EA4EE152; + ReadData2E = 64'hB81FFFFEFFFEFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4847842\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'hE23000000000E000; + ans = 64'hE23000000000E000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4848843\n"); + end + ReadData1E = 64'h40300080000007FF; + ReadData2E = 64'hBE34C68F85EE957A; + ReadData3E = 64'h93055A902618277E; + ans = 64'hBE74C735BA6ACF51; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4849844\n"); + end + ReadData1E = 64'hC2200005FFFFFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4850845\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h3F3FFFEFFFFDFFFF; + ReadData3E = 64'hC7E8181BACE32250; + ans = 64'hC7E8181BACE32250; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4851846\n"); + end + ReadData1E = 64'hC3E0000000000EFE; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h41FFFFFDFFFFFFFE; + ans = 64'h41FFFFFDFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4852847\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h416FFFFFF80007FF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4853848\n"); + end + ReadData1E = 64'h3F900003FFFFFDFF; + ReadData2E = 64'hAF3FFFFFFFBF7FFF; + ReadData3E = 64'hB49FFFF800003FFF; + ans = 64'hB49FFFF800003FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4854849\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4855850\n"); + end + ReadData1E = 64'hC06001F800000000; + ReadData2E = 64'hB57205DAE36705DD; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4856851\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h3801FFFDFFFFFFFE; + ans = 64'h3CC0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4857852\n"); + end + ReadData1E = 64'h6B207FFFBFFFFFFF; + ReadData2E = 64'h3210DB735C09496F; + ReadData3E = 64'h8010000000001040; + ans = 64'h5D41624EB37BC649; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4858853\n"); + end + ReadData1E = 64'hD60FFFE0000001FF; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'h55FFFFE0000001FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4859854\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hC01000FFFFFFFDFE; + ReadData3E = 64'h400BE72580B644D7; + ans = 64'h4026FAC9602D8F35; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4860855\n"); + end + ReadData1E = 64'h47EFF7FBFFFFFFFF; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'h395800001FFFFFFE; + ans = 64'hC7DFF7FBFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4861856\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hFFEFFFFFFFFF0003; + ReadData3E = 64'hC010000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4862857\n"); + end + ReadData1E = 64'h1BF000007FFBFFFF; + ReadData2E = 64'h40000021FFFFFFFF; + ReadData3E = 64'hC2800FFFFFFFFFEF; + ans = 64'hC2800FFFFFFFFFEF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4863858\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4023FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4864859\n"); + end + ReadData1E = 64'h4C0FFFE001000000; + ReadData2E = 64'h42AFFC00000001FF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h4ECFFBE004FFE1FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4865860\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'hC060000040FFFFFF; + ans = 64'hC05F000081FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4866861\n"); + end + ReadData1E = 64'h4030200000003FFE; + ReadData2E = 64'hBFCFFFFFFFFDF7FE; + ReadData3E = 64'h3FD1FFFFFC000000; + ans = 64'hC00E0000007E73EA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4867862\n"); + end + ReadData1E = 64'h290FFEFFFFFFFDFF; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4868863\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h3B6FFFF810000000; + ReadData3E = 64'h7FE3FFFBFFFFFFFF; + ans = 64'h7FE3FFFBFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4869864\n"); + end + ReadData1E = 64'h2280000007800000; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'hBEEFF82000000000; + ans = 64'hBEEFF82000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4870865\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'h413F004000000000; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hC14F003FC0000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4871866\n"); + end + ReadData1E = 64'h37EFDFFFFDFFFFFF; + ReadData2E = 64'hE19FFF6FFFFFFFFF; + ReadData3E = 64'h3FC3DD9CA262C4CB; + ans = 64'hD99FDF708E0008FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4872867\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h402E000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4873868\n"); + end + ReadData1E = 64'hCC407FFFFFFFF7FE; + ReadData2E = 64'h740000041FFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4874869\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h3FA4000800000000; + ans = 64'h4360000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4875870\n"); + end + ReadData1E = 64'hBF8B49E58931C10C; + ReadData2E = 64'h80000800003FFFFE; + ReadData3E = 64'h4611000003FFFFFF; + ans = 64'h4611000003FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4876871\n"); + end + ReadData1E = 64'h0010001FFFFFFEFF; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'hC000000000000000; + ans = 64'hC010000FFFFFFF80; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4877872\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hC1C07FFFFFFEFFFF; + ReadData3E = 64'hC01FFFFFFFEF8000; + ans = 64'h41D07FFFFDFF0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4878873\n"); + end + ReadData1E = 64'h38103BFFFFFFFFFE; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h3FF00000000001F6; + ans = 64'hF8103BFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4879874\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hBF5FFFDFF0000000; + ReadData3E = 64'h8010000000000001; + ans = 64'h3F6FFFDFF0000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4880875\n"); + end + ReadData1E = 64'h3E90000047FFFFFF; + ReadData2E = 64'h2D2FFFFFFF7EFFFE; + ReadData3E = 64'h8000040000007FFF; + ans = 64'h2BD0000047BF7FFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4881876\n"); + end + ReadData1E = 64'hC000000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4882877\n"); + end + ReadData1E = 64'hB7E0804000000000; + ReadData2E = 64'h00000000000FFF7F; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4883878\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h37F0000808000000; + ans = 64'h37F0000808000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4884879\n"); + end + ReadData1E = 64'h406FC48AD30035B7; + ReadData2E = 64'hC3F00000007FFFE0; + ReadData3E = 64'h43DB8A4D010C39AA; + ans = 64'hC46FB6C5AD7DD3B1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4885880\n"); + end + ReadData1E = 64'hC3F00FFFFFF7FFFF; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4886881\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'hFFD001000000003F; + ReadData3E = 64'h7FE000000008001F; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4887882\n"); + end + ReadData1E = 64'h3FAC20407E35DDF9; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'h4272A510163ABD4F; + ans = 64'h4272A510163ABD4F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4888883\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h308FE000000001FF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4889884\n"); + end + ReadData1E = 64'hC4EB8AE5FB0BFE04; + ReadData2E = 64'h3CA00FFFFF7FFFFF; + ReadData3E = 64'h80000001FFFFBFFF; + ans = 64'hC19BA670E02AB2D0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4890885\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4891886\n"); + end + ReadData1E = 64'hFCF00000000003E0; + ReadData2E = 64'h7FDFFFFFFFC02000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4892887\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'h402000FFE0000000; + ans = 64'h401C01FFC0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4893888\n"); + end + ReadData1E = 64'hCCDFFFC000800000; + ReadData2E = 64'h3FEF18921E603EB8; + ReadData3E = 64'hC3D8C6A496681E5E; + ans = 64'hCCDF1853EDB86440; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4894889\n"); + end + ReadData1E = 64'h473000000000006F; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'h472000000000006E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4895890\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h414FFFFFFFDBFFFE; + ReadData3E = 64'h31680DE9E520F1E9; + ans = 64'hC16FFFFFFFDBFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4896891\n"); + end + ReadData1E = 64'hFABFE00000040000; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h278FFFFFFFFC0000; + ans = 64'hFABFE0000003FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4897892\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h8007D8F2EB1F9595; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4898893\n"); + end + ReadData1E = 64'hC01FFFFFFFF7C000; + ReadData2E = 64'hD020100000001000; + ReadData3E = 64'h403FFFFFF03FFFFE; + ans = 64'h50500FFFFFFBEBE0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4899894\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC01FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4900895\n"); + end + ReadData1E = 64'h7FDFFE000FFFFFFF; + ReadData2E = 64'h381FFFE00000003F; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h780FFDE011FFF03E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4901896\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h407E50C0EC249A62; + ans = 64'h407DD0C0EC249A62; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4902897\n"); + end + ReadData1E = 64'hC4100001007FFFFF; + ReadData2E = 64'h7B43FFFFFFFFBFFF; + ReadData3E = 64'h3F0FFFFFF3FFFFFF; + ans = 64'hFF640001409FBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4903898\n"); + end + ReadData1E = 64'h52B0000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'h52CFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4904899\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h435FF7FFFFFFFFC0; + ReadData3E = 64'h381FFF00000001FF; + ans = 64'hC37FF7FFFFFFFFBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4905900\n"); + end + ReadData1E = 64'h4E600001FFFEFFFF; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h39962A516A690274; + ans = 64'h4E800001FFFF0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4906901\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h4010007FFFFEFFFE; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hC030407FFFFEFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4907902\n"); + end + ReadData1E = 64'h3FE0100000000000; + ReadData2E = 64'h7FF007FFFFFFF000; + ReadData3E = 64'hBFBE4AB9C2ACF6C1; + ans = 64'h7FF807FFFFFFF000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4908903\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC360000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4909904\n"); + end + ReadData1E = 64'h3FEFFFFFFFFFFCFF; + ReadData2E = 64'h47FEFFFFFFFFFF00; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4910905\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h42EFFFFFFD000000; + ans = 64'hC36FE0000002FFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4911906\n"); + end + ReadData1E = 64'hBCA7F12CE4F52468; + ReadData2E = 64'hC01FFFFFFFBFFFF8; + ReadData3E = 64'h402FFFFFFFFFBE00; + ans = 64'h402FFFFFFFFFBE01; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4912907\n"); + end + ReadData1E = 64'h403C961646FA57FB; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4913908\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h3EE4469C03D50051; + ReadData3E = 64'h3FFFFFFFFFBFEFFE; + ans = 64'h3FFFFFD77287E854; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4914909\n"); + end + ReadData1E = 64'hC7F000007FFFF800; + ReadData2E = 64'h7FF0000000000000; + ReadData3E = 64'h3EEFFFFFFF800010; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4915910\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h3F8D7AEF9798FABB; + ReadData3E = 64'h0000000000000001; + ans = 64'hBFAD7AEF9798FABA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4916911\n"); + end + ReadData1E = 64'hBB53A9072DEB1E20; + ReadData2E = 64'hC38FFFFC0FFFFFFF; + ReadData3E = 64'hFFDFFFFFF7FBFFFF; + ans = 64'hFFDFFFFFF7FBFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4917912\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h800FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4918913\n"); + end + ReadData1E = 64'hB5C400007FFFFFFF; + ReadData2E = 64'h47E1C03E98F7E3F6; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC0100000000058C0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4919914\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h43DD7E3D3AF445D8; + ans = 64'h43DD7E3D3AF445D8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4920915\n"); + end + ReadData1E = 64'hC33DCE78267A59C7; + ReadData2E = 64'hBFFFFFFFFFFFFFC0; + ReadData3E = 64'hC4AFFFBFFFFFFFF7; + ans = 64'hC4AFFFBF88C61F5D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4921916\n"); + end + ReadData1E = 64'h41C86B3FC5FC95EC; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4922917\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h3E40400000000010; + ReadData3E = 64'h480D4D54130E56CB; + ans = 64'h480D4D54130E56CB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4923918\n"); + end + ReadData1E = 64'h800FFFFE00FFFFFE; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'hA15F000000FFFFFF; + ans = 64'hA15F000000FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4924919\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'hA59FFF3FFFFFFFFF; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4925920\n"); + end + ReadData1E = 64'h3F6BB9453C4A986C; + ReadData2E = 64'h43D002000000FFFF; + ReadData3E = 64'h40101FFFFFFF7FFF; + ans = 64'h434BBCBC64F3DD54; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4926921\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4927922\n"); + end + ReadData1E = 64'h37E00000001FFDFE; + ReadData2E = 64'hBEB0000000400008; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4928923\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'hA42F4B054D095CD5; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4929924\n"); + end + ReadData1E = 64'hC1E0017FFFFFFFFE; + ReadData2E = 64'h43CF8000003FFFFF; + ReadData3E = 64'hB81EBFFFFFFFFFFF; + ans = 64'hC5BF82F4004005FB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4930925\n"); + end + ReadData1E = 64'h37E529AA0F0EE740; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4931926\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'hAB7BBD0542CD5339; + ReadData3E = 64'h9B3C3CDEEEB5AAA4; + ans = 64'h2B9BBD0542CD5338; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4932927\n"); + end + ReadData1E = 64'hC02FFFFBFFBFFFFF; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h41EB0208DA70A87C; + ans = 64'h41EB0208DC70A83C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4933928\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h6B201000FFFFFFFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hEB401000FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4934929\n"); + end + ReadData1E = 64'h002FFFFFFFF7FDFE; + ReadData2E = 64'hC04BFFFFFFFFFFEF; + ReadData3E = 64'hBD7FFFFFFBFFFFFF; + ans = 64'hBD7FFFFFFBFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4935930\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4023FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4936931\n"); + end + ReadData1E = 64'hEE5200000FFFFFFE; + ReadData2E = 64'h41328B48CA11072D; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hEF94DCB1F5DE70DA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4937932\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'h433FFFFFF807FFFE; + ans = 64'h433FFFFFF8080006; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4938933\n"); + end + ReadData1E = 64'h402FF6FFFFFFFFFE; + ReadData2E = 64'h749510D2004718F7; + ReadData3E = 64'h3CA0100001FFFFFF; + ans = 64'h74D50AE5453704F7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4939934\n"); + end + ReadData1E = 64'h3FB2200000000000; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h4010000000000000; + ans = 64'h400DBC0000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4940935\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h4766981A549047AA; + ReadData3E = 64'hBD8FFFEFFFFFF800; + ans = 64'hC786981A549047A9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4941936\n"); + end + ReadData1E = 64'h3713E8E341E6CAE4; + ReadData2E = 64'hC01FFFFFFFFFFFFF; + ReadData3E = 64'hC05BF643A8A27E7C; + ans = 64'hC05BF643A8A27E7C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4942937\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h031AD964B2884DDB; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4943938\n"); + end + ReadData1E = 64'hC3EFFFFFFFFF7EFF; + ReadData2E = 64'hC3C512A14A557DF3; + ReadData3E = 64'hBF8FFFFF7FFFEFFE; + ans = 64'h47C512A14A5528FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4944939\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h436FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4945940\n"); + end + ReadData1E = 64'hBA8B9409EB2DB4C8; + ReadData2E = 64'h40100008001FFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4946941\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'hC1FFFFFFFE0003FE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4947942\n"); + end + ReadData1E = 64'h439FFFFFFFFBFE00; + ReadData2E = 64'h000CE3FE5BB77855; + ReadData3E = 64'h403EC725CE75E08E; + ans = 64'h403EC725CE75E08E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4948943\n"); + end + ReadData1E = 64'h381DF32B4F95E762; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hF81DF32B4F95E760; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4949944\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'h3FCFE00000001000; + ReadData3E = 64'h41EFFFFFF0000002; + ans = 64'h41EFFFFFEFE02002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4950945\n"); + end + ReadData1E = 64'hA4B0004000001FFE; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'hB80FFFEFFBFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4951946\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFF; + ReadData2E = 64'hBF7FFFFFEFFFFFFD; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4952947\n"); + end + ReadData1E = 64'h35FFFFFFC0001000; + ReadData2E = 64'h43D0101FFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFBFE; + ans = 64'hBFEFFFFFFFFFFBFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4953948\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4954949\n"); + end + ReadData1E = 64'hCC3573966B8CBBAE; + ReadData2E = 64'h3F80000000FF7FFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hCBC573966CE34977; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4955950\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'hFFF08DDE16076B76; + ans = 64'hFFF88DDE16076B76; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4956951\n"); + end + ReadData1E = 64'h1EEFFFFFFFFFFE40; + ReadData2E = 64'hBFAFFFFFFFF5FFFE; + ReadData3E = 64'hB92F7FFFFFEFFFFF; + ans = 64'hB92F7FFFFFEFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4957952\n"); + end + ReadData1E = 64'hC1F796AC7FFE8725; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h0010000000000000; + ans = 64'h822796AC7FF68724; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4958953\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h40AFFFFC00008000; + ReadData3E = 64'hC3DA6ED5B5273DF6; + ans = 64'hC3DA6ED5B5273E06; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4959954\n"); + end + ReadData1E = 64'h41CFFFFFFFFFEFEF; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h3FF0007000000000; + ans = 64'h3FF0007020000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4960955\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'hC0EFFC00000FFFFF; + ReadData3E = 64'hC010000000000001; + ans = 64'h410FFBE0000FFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4961956\n"); + end + ReadData1E = 64'hBFD01000007FFFFF; + ReadData2E = 64'hBFCFFFFFFDEFFFFF; + ReadData3E = 64'h37FFF7FFFFFFEFFF; + ans = 64'h3FB00FFFFF76F7FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4962957\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401BFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4963958\n"); + end + ReadData1E = 64'h06C0000000000042; + ReadData2E = 64'h380FFFFFFFBFFFFB; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4964959\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'h47F000000007FFFC; + ans = 64'h47F000000007FFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4965960\n"); + end + ReadData1E = 64'hBFA004000000003F; + ReadData2E = 64'hBFE0400001FFFFFF; + ReadData3E = 64'h43FFFFFFEFF7FFFF; + ans = 64'h43FFFFFFEFF7FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4966961\n"); + end + ReadData1E = 64'hC1DBF9FCC6FD1F41; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4967962\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h3FB40000000FFFFF; + ReadData3E = 64'hC03FFFF800003FFE; + ans = 64'hC04027FC00003FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4968963\n"); + end + ReadData1E = 64'hC1FE0000001FFFFF; + ReadData2E = 64'h3FF0000000000000; + ReadData3E = 64'hBFD0000000000000; + ans = 64'hC1FE00000023FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4969964\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h3FD000200000000F; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hBFE000400000001B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4970965\n"); + end + ReadData1E = 64'h678F2F663608AB65; + ReadData2E = 64'h43C1FFFFFF7FFFFF; + ReadData3E = 64'h4340080001FFFFFF; + ans = 64'h6B618AA97DE822CF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4971966\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hC021FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4972967\n"); + end + ReadData1E = 64'hC03FFFFFDFDFFFFE; + ReadData2E = 64'h3EB514F3C6515E26; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4973968\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hC2419AE421F8BEE0; + ans = 64'hC2419AE42200BEE0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4974969\n"); + end + ReadData1E = 64'h77A033D4933513D5; + ReadData2E = 64'h4B0FFFFFFFFFFFDE; + ReadData3E = 64'hC1DD2A152448FFB6; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4975970\n"); + end + ReadData1E = 64'hC0FFFFFFFFFFF3FF; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'hC1200003FFFFFA00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4976971\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h3FCDFFBFFFFFFFFF; + ReadData3E = 64'hC00FFBFFFFFFFF7F; + ans = 64'hC013BDF7FFFFFFBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4977972\n"); + end + ReadData1E = 64'hBFA0000000000000; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h5FADFFFFC0000000; + ans = 64'h5FADFFFFC0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4978973\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h3FB000000FC00000; + ReadData3E = 64'h8010000000000001; + ans = 64'hBFD000000FBFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4979974\n"); + end + ReadData1E = 64'h41C008000FFFFFFE; + ReadData2E = 64'hFFF00020003FFFFF; + ReadData3E = 64'h47F29ED74A8E82A8; + ans = 64'hFFF80020003FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4980975\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4981976\n"); + end + ReadData1E = 64'h400BFF736D9AF89E; + ReadData2E = 64'h41FFFFFFFFFFBFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h421BFF736DBAC09D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4982977\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h4020E8F734A930E7; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4983978\n"); + end + ReadData1E = 64'hB7FA000000000000; + ReadData2E = 64'h802FFFFFFFFFFF90; + ReadData3E = 64'hB350000FEFFFFFFF; + ans = 64'hB350000FEFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4984979\n"); + end + ReadData1E = 64'hBB83FFFEFFFFFFFF; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4985980\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h41D000000004001F; + ReadData3E = 64'h41DEFEFFFFFFFFFE; + ans = 64'hC1E080800008003D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4986981\n"); + end + ReadData1E = 64'h4036F40B89F5CC2B; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'h43FFF7FEFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4987982\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h37F800000000FFFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4988983\n"); + end + ReadData1E = 64'hBFBE000400000000; + ReadData2E = 64'hBF1FFBFBFFFFFFFE; + ReadData3E = 64'h43C000087FFFFFFE; + ans = 64'h43C000087FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4989984\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4990985\n"); + end + ReadData1E = 64'h37E000007FFFFFFE; + ReadData2E = 64'h3EFFBFDFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4991986\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'hBFC003DFFFFFFFFF; + ans = 64'hBFC003DFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4992987\n"); + end + ReadData1E = 64'h3F027FFFFFFFFFFF; + ReadData2E = 64'h37FFFFFFFFFE4000; + ReadData3E = 64'h40B000000008000F; + ans = 64'h40B000000008000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4993988\n"); + end + ReadData1E = 64'hB80FFFFFFFFFF77F; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'h34BFFFFFFFFFF77F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4994989\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h41C0104000000000; + ReadData3E = 64'hFFE0008000000008; + ans = 64'hFFE0008000000008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4995990\n"); + end + ReadData1E = 64'hBFFC4D19B56BA8DB; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFC000100; + ans = 64'hC00FFFFFFC0000FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4996991\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h0007EFFFFFFFFFFF; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4997992\n"); + end + ReadData1E = 64'h52E8693BA208E5ED; + ReadData2E = 64'hC1E001FFFFFFFEFF; + ReadData3E = 64'hBFC0001000000002; + ans = 64'hD4D86C48C97D2582; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4998993\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hBFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"4999994\n"); + end + ReadData1E = 64'hA3BFFFFFFFFF4000; + ReadData2E = 64'h3FCFFFFFEFFFFFF6; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hA39FFFFFEFFF3FF6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5000995\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'hBFF00080007FFFFF; + ans = 64'h3FEFFEFFFF000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5001996\n"); + end + ReadData1E = 64'hC3C1A5668D0B3C9B; + ReadData2E = 64'h43F0000108000000; + ReadData3E = 64'h3FA429EFD7481BF0; + ans = 64'hC7C1A567B03458B2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5002997\n"); + end + ReadData1E = 64'hC004F4F9BDA3F266; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'hC340000000000000; + ans = 64'hC33FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5003998\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'hC02B565EBC8C06B6; + ReadData3E = 64'h6C6FFFFFF0000400; + ans = 64'h6C6FFFFFF0000400; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5004999\n"); + end + ReadData1E = 64'h3FE7B0B5BEA7DE4B; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h002F1FFFFFFFFFFF; + ans = 64'hBFF7B0B5BEA7DE4A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5006000\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'h3FDFFFFF7FF80000; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hC001FFFFBFFBFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5007001\n"); + end + ReadData1E = 64'hA8FFFFFFFDFFFEFF; + ReadData2E = 64'h7FE32233361753C8; + ReadData3E = 64'hC00FF80000000040; + ans = 64'hE8F3223334E52FFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5008002\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h40307FFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5009003\n"); + end + ReadData1E = 64'h41F0001000000000; + ReadData2E = 64'h402F7FFFFFBFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5010004\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'hC51E0EEADCF305DD; + ans = 64'hC51E0EEADCF305DD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5011005\n"); + end + ReadData1E = 64'h3C6FFE000000FFFE; + ReadData2E = 64'hC05FEFFDFFFFFFFF; + ReadData3E = 64'h47E000000017FFFF; + ans = 64'h47E000000017FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5012006\n"); + end + ReadData1E = 64'hE0CFF8000003FFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h60FFF8000003FFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5013007\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'hC03FFFBFBFFFFFFF; + ReadData3E = 64'hBF10000002000001; + ans = 64'h405FFFBEBFFFFFDD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5014008\n"); + end + ReadData1E = 64'hC0B2CB113B9635CA; + ReadData2E = 64'hC340000000000001; + ReadData3E = 64'h302000BFFFFFFFFF; + ans = 64'h4402CB113B9635CB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5015009\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'hC7EFC0000000007F; + ReadData3E = 64'h0000000000000001; + ans = 64'h480FC0000000007D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5016010\n"); + end + ReadData1E = 64'hC1F5A6ACF565AA57; + ReadData2E = 64'h5065D9CBE16B8334; + ReadData3E = 64'h41CFFFFFFFFE7FFF; + ans = 64'hD26D917B6F91684D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5017011\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5018012\n"); + end + ReadData1E = 64'h3FDEFFFFFFDFFFFE; + ReadData2E = 64'hFFD0DFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hFFC058FFFFEF1FFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5019013\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h4014C275DAEADD48; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5020014\n"); + end + ReadData1E = 64'h40CDFFFFFF800000; + ReadData2E = 64'h403FFFE00001FFFF; + ReadData3E = 64'h3817E49CCEC04CCB; + ans = 64'h411DFFE1FF81E07F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5021015\n"); + end + ReadData1E = 64'h3F3FFFEFFFBFFFFF; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5022016\n"); + end + ReadData1E = 64'hC00FFFFFFFFFFFFE; + ReadData2E = 64'hC1DBFFBFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFF7FFFFBF; + ans = 64'h41FBFFBFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5023017\n"); + end + ReadData1E = 64'h63FFFFFFFFFF5FFF; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'hC1FB801219D0F121; + ans = 64'hC1FB801219D0F121; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5024018\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h3E3FFFFE7FFFFFFF; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5025019\n"); + end + ReadData1E = 64'hC03FFFF7FFFFFFFF; + ReadData2E = 64'h3FD00000FFFFFEFE; + ReadData3E = 64'h3FD0000000080002; + ans = 64'hC01EFFF9FFFEFDFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5026020\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5027021\n"); + end + ReadData1E = 64'hC0800000100001FF; + ReadData2E = 64'h3FCFFF000001FFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC05FDF00200103FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5028022\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'hBFF00000080000FF; + ans = 64'hBFF00000080000FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5029023\n"); + end + ReadData1E = 64'hFFEFFFFC01FFFFFE; + ReadData2E = 64'h43D0000000000000; + ReadData3E = 64'h3806864C983757AE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5030024\n"); + end + ReadData1E = 64'hC1EA39334D94DC76; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5031025\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'hC1804000000007FF; + ReadData3E = 64'hC1C000040003FFFF; + ans = 64'hC1B7E0080007FBFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5032026\n"); + end + ReadData1E = 64'h40F200001FFFFFFF; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'hDC50000007F7FFFE; + ans = 64'hDC50000007F7FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5033027\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'hC01001000000003F; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h402E02000000007E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5034028\n"); + end + ReadData1E = 64'hCC00200000020000; + ReadData2E = 64'h43D000003FDFFFFF; + ReadData3E = 64'h4F3A56DFC0615F60; + ans = 64'hCFE01CB56469B3D3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5035029\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hBCC0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5036030\n"); + end + ReadData1E = 64'hCC8FFE0000000003; + ReadData2E = 64'hBED08F034D25218B; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h4B708DFA5CF04F3A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5037031\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h38F0004A0417C6AD; + ans = 64'hC00FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5038032\n"); + end + ReadData1E = 64'h40000040000000FE; + ReadData2E = 64'hBA7000000008003E; + ReadData3E = 64'hBFDFFFFFFC00007F; + ans = 64'hBFDFFFFFFC00007F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5039033\n"); + end + ReadData1E = 64'h801FFFFFFFEFFFBF; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5040034\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h43C00020003FFFFE; + ReadData3E = 64'h403FFFFF801FFFFF; + ans = 64'hC3E00020003FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5041035\n"); + end + ReadData1E = 64'h4070003FFFFC0000; + ReadData2E = 64'h3FFFFFFFFFFFFFFE; + ReadData3E = 64'hC09000000000017F; + ans = 64'hC07FFF80000805FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5042036\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h3FC0010000000020; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hBFE001000000001F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5043037\n"); + end + ReadData1E = 64'h670E2F0B62FF1823; + ReadData2E = 64'hB800000001000002; + ReadData3E = 64'hC01FFFE7FFFFFFFF; + ans = 64'hDF1E2F0B64E208DD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5044038\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC02FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5045039\n"); + end + ReadData1E = 64'h802000003FDFFFFF; + ReadData2E = 64'h41E1D9E1F5C0A8BE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5046040\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hC00F000000000007; + ans = 64'hC041F00000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5047041\n"); + end + ReadData1E = 64'hBFF001FFFFFF7FFF; + ReadData2E = 64'h38103FFFFEFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFC7FE; + ans = 64'h3FDFFFFFFFFFC7FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5048042\n"); + end + ReadData1E = 64'h7FF0000FFFFFBFFE; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h7FF8000FFFFFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5049043\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h4142B65B0E2AC49C; + ReadData3E = 64'h7FE2B50ACB01F84B; + ans = 64'h7FE2B50ACB01F84B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5050044\n"); + end + ReadData1E = 64'h46707914A14EF9A2; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h3C60000008007FFF; + ans = 64'h49D07914A14EF9A1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5051045\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'hC3E0007FFFFFFFF6; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5052046\n"); + end + ReadData1E = 64'hC01FFFFFFFFFF87F; + ReadData2E = 64'h380FFFFFFFFFC3FF; + ReadData3E = 64'h38D3FFEFFFFFFFFE; + ans = 64'h38D3F7F00000000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5053047\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5054048\n"); + end + ReadData1E = 64'h3FCFC000000000FF; + ReadData2E = 64'hD25003FBFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hD22FC7E8100000FB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5055049\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h47886C7835112E9C; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5056050\n"); + end + ReadData1E = 64'h37F000000007FFFB; + ReadData2E = 64'hB81FF8007FFFFFFE; + ReadData3E = 64'hC3C001FFFFFFBFFE; + ans = 64'hC3C001FFFFFFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5057051\n"); + end + ReadData1E = 64'h3FDFFFFFFEFFFFEF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h0010000000000000; + ans = 64'h0010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5058052\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h43EFFFF7FDFFFFFF; + ReadData3E = 64'hBCA4286D22C01D18; + ans = 64'hC40FFFF7FDFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5059053\n"); + end + ReadData1E = 64'h7FEE1FFFFFFFFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hC020000400000000; + ans = 64'hC0278803FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5060054\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h437FF00FFFFFFFFF; + ReadData3E = 64'hC010000000000001; + ans = 64'hC39FF00FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5061055\n"); + end + ReadData1E = 64'h875A2E1CBCE13E78; + ReadData2E = 64'hC04FFF8000000007; + ReadData3E = 64'h43DE3ACE44F704A0; + ans = 64'h43DE3ACE44F704A0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5062056\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5063057\n"); + end + ReadData1E = 64'h30AFFFFFFFFEFFF6; + ReadData2E = 64'h414A2E3A626B4242; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5064058\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'hC7F98039F7DAA9C0; + ans = 64'hC7F98039F7DAA9C0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5065059\n"); + end + ReadData1E = 64'h8690000002000020; + ReadData2E = 64'h3FCFFBFFFFFFFFFF; + ReadData3E = 64'hCC9000000FFFFDFF; + ans = 64'hCC9000000FFFFDFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5066060\n"); + end + ReadData1E = 64'hC50FFFFFFFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5067061\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h406FF7FFFFFDFFFF; + ReadData3E = 64'hE52FFFF00000000E; + ans = 64'hE52FFFF00000000E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5068062\n"); + end + ReadData1E = 64'h312B1CF7D0590E03; + ReadData2E = 64'hBFD0000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFEBE; + ans = 64'h3FDFFFFFFFFFFEBE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5069063\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'hC800000000000090; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h4820000000000090; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5070064\n"); + end + ReadData1E = 64'h406D28D6C40A272B; + ReadData2E = 64'h37F00081FFFFFFFF; + ReadData3E = 64'h4FC047FFFFFFFFFF; + ans = 64'h4FC047FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5071065\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h3FF0000000000003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5072066\n"); + end + ReadData1E = 64'hBFF000020001FFFE; + ReadData2E = 64'h430000002000003E; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5073067\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'h7FFFFFFFFF7DFFFF; + ans = 64'h7FFFFFFFFF7DFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5074068\n"); + end + ReadData1E = 64'hFFFBFFFFFFFFF800; + ReadData2E = 64'hC01643298F2F2921; + ReadData3E = 64'h430FFFF040000000; + ans = 64'hFFFBFFFFFFFFF800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5075069\n"); + end + ReadData1E = 64'h47F003FFFFFFBFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'hC80003FFFFFFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5076070\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'hA67000FFFFFFF7FF; + ReadData3E = 64'hC03FFFFFFFFFFF5E; + ans = 64'hC03FFFFFFFFFFF5E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5077071\n"); + end + ReadData1E = 64'h43EFFFF80000001F; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hC031E50E145D5126; + ans = 64'hC3FFFFF800000021; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5078072\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h3807D0A78B4B7F1D; + ReadData3E = 64'h8010000000000001; + ans = 64'hB827D0A78B4B7F1D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5079073\n"); + end + ReadData1E = 64'hBC0003FFFFFFFFFF; + ReadData2E = 64'hBFB2656AFDB0ABCE; + ReadData3E = 64'h2A52000001FFFFFF; + ans = 64'h3BC26A04587017F8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5080074\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h4030000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5081075\n"); + end + ReadData1E = 64'hE91583A222391B9E; + ReadData2E = 64'h3FD8ACA44513B78D; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hE90096CB9232CE39; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5082076\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hC80000000007FFFF; + ans = 64'hC80000000007FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5083077\n"); + end + ReadData1E = 64'hC020000000008400; + ReadData2E = 64'h801000010000007F; + ReadData3E = 64'hC02FBFFF7FFFFFFF; + ans = 64'hC02FBFFF7FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5084078\n"); + end + ReadData1E = 64'hC3EA8EC2CAB1E168; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h474A8EC2CAB1E167; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5085079\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h43500007FFF7FFFF; + ReadData3E = 64'hC23000000007FFC0; + ans = 64'hC3700008FFF7FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5086080\n"); + end + ReadData1E = 64'h3B0FFFFFFDFFF7FE; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'hBFE00000040000FF; + ans = 64'hFAFFFFFFFDFFF7FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5087081\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'h43F4000100000000; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5088082\n"); + end + ReadData1E = 64'hC03B19E29AE6BB20; + ReadData2E = 64'hC0200000000FFFFE; + ReadData3E = 64'hC000001000000000; + ans = 64'h406AD9E25B01D4FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5089083\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5090084\n"); + end + ReadData1E = 64'hC0057086992F2843; + ReadData2E = 64'h802FFFFFFFBFFFBF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5091085\n"); + end + ReadData1E = 64'hC010000000000000; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'h381000000FF80000; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5092086\n"); + end + ReadData1E = 64'h40E000080000007F; + ReadData2E = 64'hC00100000003FFFF; + ReadData3E = 64'hBF0FBFFFFFFFFFFE; + ans = 64'hC0F1000880438088; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5093087\n"); + end + ReadData1E = 64'hC1EEE0BAD9BAC2B5; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h8000000000000000; + ans = 64'h80000000F705D6CE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5094088\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hC800000000001C00; + ReadData3E = 64'h9A8FFFFFF0002000; + ans = 64'h4820000000001C01; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5095089\n"); + end + ReadData1E = 64'h42CD00A4B31E6394; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'hC3401FFFFDFFFFFF; + ans = 64'hC3401FFFFDFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5096090\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h3FEB26E5B484AEC7; + ReadData3E = 64'h4000000000000001; + ans = 64'hBFF64DCB69095D8F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5097091\n"); + end + ReadData1E = 64'h3F880FFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFF83FFF; + ReadData3E = 64'hC34230B16B13046C; + ans = 64'hC34230B16B13046C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5098092\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5099093\n"); + end + ReadData1E = 64'hB7E536F5D3A1806A; + ReadData2E = 64'hC03FFFBFFFFFDFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h383536CB65B5C3EF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5100094\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h3FBFFFFFF8000003; + ans = 64'h3FBFFFFFF7FFFFC3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5101095\n"); + end + ReadData1E = 64'h3E4FF0000FFFFFFF; + ReadData2E = 64'h41D03FFFFF7FFFFF; + ReadData3E = 64'hC03FFE0001000000; + ans = 64'hC02F8C3FF2BF8004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5102096\n"); + end + ReadData1E = 64'hBD88A04F369F2D1D; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5103097\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h7FFCCCDE83ADB1B6; + ReadData3E = 64'hB883FFFFBFFFFFFF; + ans = 64'h7FFCCCDE83ADB1B6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5104098\n"); + end + ReadData1E = 64'hB460000007FFEFFF; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'h58AFFFFFFFFC0003; + ans = 64'h58AFFFFFFFFC0003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5105099\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hBA2FFFFFFFFFFFE4; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hBFD0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5106100\n"); + end + ReadData1E = 64'hBEB0400000000040; + ReadData2E = 64'hCBDBB6A1F8ED4729; + ReadData3E = 64'hC3DFFF8000000003; + ans = 64'h4A9C257C80D0FCB4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5107101\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hC00C000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5108102\n"); + end + ReadData1E = 64'h7FFDE5FA3FA8926A; + ReadData2E = 64'h4035208078966D21; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FFDE5FA3FA8926A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5109103\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h3F8D7980B2857270; + ans = 64'hC00FE2867F4D7A92; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5110104\n"); + end + ReadData1E = 64'hC01FFFFFC0001FFE; + ReadData2E = 64'h43E268711165F6FB; + ReadData3E = 64'h002FFFE7FFFFFFFF; + ans = 64'hC4126870EC95273F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5111105\n"); + end + ReadData1E = 64'hD890000010000008; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hD8A0000010000008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5112106\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h0CFFFFFFFFFFE0FF; + ReadData3E = 64'h0014195E23B771EC; + ans = 64'h8D1FFFFFFFFFE101; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5113107\n"); + end + ReadData1E = 64'hBD600001FFFFFFFE; + ReadData2E = 64'h400FFFFFFFFFFFFF; + ReadData3E = 64'hC3DFEA3632F1BB30; + ans = 64'hC3DFEA3632F1BB30; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5114108\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h3FFFFF0200000000; + ReadData3E = 64'h0000000000000001; + ans = 64'hC01FFF0200000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5115109\n"); + end + ReadData1E = 64'hB81F4BEA4BE01101; + ReadData2E = 64'h405FFFFFFF7EFFFE; + ReadData3E = 64'hBDCC8446A30BA05A; + ans = 64'hBDCC8446A30BA05A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5116110\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC040000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5117111\n"); + end + ReadData1E = 64'h32D8F592B38CA7C7; + ReadData2E = 64'h40300000000003FE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5118112\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'hC3D00FFFF8000000; + ans = 64'hC3D02FFFF8000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5119113\n"); + end + ReadData1E = 64'hA6FFDFFFFFFF7FFF; + ReadData2E = 64'h412FFFF7FFFFFFF7; + ReadData3E = 64'hBFFFFFFF7FDFFFFF; + ans = 64'hBFFFFFFF7FDFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5120114\n"); + end + ReadData1E = 64'h43D00000000EFFFF; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h47300000000EFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5121115\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hC7FFFFE000000004; + ReadData3E = 64'hBFCF269D56721DA4; + ans = 64'h481FFFE000000006; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5122116\n"); + end + ReadData1E = 64'hFFF2A7726322BBD4; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hC1E007FFFFFFFFFB; + ans = 64'hFFFAA7726322BBD4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5123117\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hC3C7B65C921C0456; + ReadData3E = 64'h4340000000000001; + ans = 64'h43E7BA5C921C0457; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5124118\n"); + end + ReadData1E = 64'h00200000003FFFFE; + ReadData2E = 64'h490E100000000000; + ReadData3E = 64'hBCAFFFE0001FFFFE; + ans = 64'hBCAFFFE0001FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5125119\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5126120\n"); + end + ReadData1E = 64'hC00FFEFFFFFFFFF7; + ReadData2E = 64'h3ECFFFFFFFFFF83E; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFC001FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5127121\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'hBE3FFFFE0003FFFE; + ans = 64'hBE3FFFFE0003FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5128122\n"); + end + ReadData1E = 64'hC3CFFDFFFFFFFFFB; + ReadData2E = 64'h381FFF800000003E; + ReadData3E = 64'h41C0000000003EFE; + ans = 64'h41C0000000003EFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5129123\n"); + end + ReadData1E = 64'hC05D36A8CF978781; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5130124\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hB8DFFFFFFFDF0000; + ReadData3E = 64'hC00FFFFFFFFFFF40; + ans = 64'hC00FFFFFFFFFFF40; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5131125\n"); + end + ReadData1E = 64'hBFC0000003DFFFFF; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'hC1C000807FFFFFFE; + ans = 64'hC1C000807FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5132126\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h800080000007FFFE; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5133127\n"); + end + ReadData1E = 64'hC1CF0000001FFFFF; + ReadData2E = 64'h3FF4CFE5C08F27B0; + ReadData3E = 64'hBB3FFFFFFFFFFF7B; + ans = 64'hC1D42966929F7E58; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5134128\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5135129\n"); + end + ReadData1E = 64'hB82FFFFFC0000000; + ReadData2E = 64'h80200FFFFFFFBFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h800FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5136130\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'h4019AA0747740C40; + ans = 64'h4019AA0747740C41; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5137131\n"); + end + ReadData1E = 64'hD46FFF8000FFFFFF; + ReadData2E = 64'hC026B122BC238D87; + ReadData3E = 64'hBFA0041000000000; + ans = 64'h54A6B0C7F84E260E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5138132\n"); + end + ReadData1E = 64'hC00FFFEFFFFFF7FF; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'h4017FFFBFFFFFE00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5139133\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hC020000002001FFF; + ReadData3E = 64'hC0DEB3600D14A956; + ans = 64'hC0DEAB600D13A946; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5140134\n"); + end + ReadData1E = 64'h3FBFFFFFFFF00007; + ReadData2E = 64'hBFE0000000000000; + ReadData3E = 64'h3FD4000000007FFF; + ans = 64'h3FD0000000027FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5141135\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h41C311C9FB4ED2C3; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hC1E311C9FB4ED2C4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5142136\n"); + end + ReadData1E = 64'hFC4000004000003E; + ReadData2E = 64'hC0BFF80000000003; + ReadData3E = 64'h41DFFFFFFFFFFF7C; + ans = 64'h7D0FF8007FE0007F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5143137\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h4010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5144138\n"); + end + ReadData1E = 64'hBF4000000000007D; + ReadData2E = 64'hC01000000801FFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5145139\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'hBFDFFFFEFFFFFFEE; + ans = 64'h401E000010000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5146140\n"); + end + ReadData1E = 64'hB8197E06D074515B; + ReadData2E = 64'h4038A7C23233AB44; + ReadData3E = 64'hBFB0000200008000; + ans = 64'hBFB0000200008000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5147141\n"); + end + ReadData1E = 64'hC010400002000000; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h401E800004000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5148142\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hBE3FFDFFFFFF0000; + ReadData3E = 64'h47DDFFFFFFFFFC00; + ans = 64'h47DDFFFFFFFFFC00; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5149143\n"); + end + ReadData1E = 64'hC7FFFFFFFFFFDFF7; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h451877D862B4C7F9; + ans = 64'h481FFFFFFFFFE00F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5150144\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h400FFC07FFFFFFFF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5151145\n"); + end + ReadData1E = 64'h401FFFFFBFFFFC00; + ReadData2E = 64'h4020000203FFFFFF; + ReadData3E = 64'h42193180BA6C7545; + ans = 64'h42193180BB6C7563; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5152146\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5153147\n"); + end + ReadData1E = 64'hB80FFFFFF800FFFE; + ReadData2E = 64'hC3E64A64D1630CA2; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5154148\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h3FAFFFFFFF77FFFF; + ans = 64'h4370000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5155149\n"); + end + ReadData1E = 64'h4950000000000FBF; + ReadData2E = 64'h5190000040000200; + ReadData3E = 64'hC02850EEC71C0E10; + ans = 64'h5AF00000400011BF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5156150\n"); + end + ReadData1E = 64'h41B0000000010007; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5157151\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hC3400401FFFFFFFF; + ReadData3E = 64'hBDDFFFDEFFFFFFFF; + ans = 64'h4360040200000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5158152\n"); + end + ReadData1E = 64'hDC5FFFFFFF7DFFFE; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'hC1EDB4F10E714F6F; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5159153\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'h403F7FFFFFFDFFFE; + ReadData3E = 64'hC010000000000001; + ans = 64'hC0603FFFFFFF0000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5160154\n"); + end + ReadData1E = 64'h3D4663A5EC438605; + ReadData2E = 64'h40300021FFFFFFFF; + ReadData3E = 64'hC03FFFFFF7FFFFBF; + ans = 64'hC03FFFFFF7FFFCF3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5161155\n"); + end + ReadData1E = 64'hC010000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5162156\n"); + end + ReadData1E = 64'h3E21FFFFFEFFFFFF; + ReadData2E = 64'hBFCFFFFF7BFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBE02000034C00003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5163157\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h3FAFFFFFE0000080; + ans = 64'h3FAFFFFFE0000080; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5164158\n"); + end + ReadData1E = 64'hC3F000000008000F; + ReadData2E = 64'h381DFFFFFBFFFFFF; + ReadData3E = 64'h6070000007FFFFFC; + ans = 64'h6070000007FFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5165159\n"); + end + ReadData1E = 64'hC7F72D13BA33D32C; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5166160\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'hC0DFFFFFC8000000; + ReadData3E = 64'h7FFFFBFFFFFBFFFF; + ans = 64'h7FFFFBFFFFFBFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5167161\n"); + end + ReadData1E = 64'hC001000000000007; + ReadData2E = 64'h001FFFFFFFFFFFFF; + ReadData3E = 64'hBFFFFFFFFF00000F; + ans = 64'hBFFFFFFFFF00000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5168162\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h48081FFFFFFFFFFF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hC8381FFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5169163\n"); + end + ReadData1E = 64'h39F800000007FFFF; + ReadData2E = 64'h40997199F2E75D09; + ReadData3E = 64'h4DDF39E3FD736310; + ans = 64'h4DDF39E3FD736310; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5170164\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFF0000000000007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5171165\n"); + end + ReadData1E = 64'hFFDFF00007FFFFFF; + ReadData2E = 64'h2D30000000081FFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5172166\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h40DA171D399348FF; + ans = 64'h40DA169D399348FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5173167\n"); + end + ReadData1E = 64'h402D0C8C3BD806A3; + ReadData2E = 64'h4340001020000000; + ReadData3E = 64'hC1E00000FFFFFFFA; + ans = 64'h437D0CA97A7D5A73; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5174168\n"); + end + ReadData1E = 64'hC650000000200004; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'hC640000000200003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5175169\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'hC03FF0007FFFFFFE; + ReadData3E = 64'h4009314AA16CF589; + ans = 64'h40702A62D542D9EA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5176170\n"); + end + ReadData1E = 64'hBF5000003FFFFFFB; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'hC01FFFFFFDFFFEFF; + ans = 64'hC020007FFF01FF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5177171\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'hBFDB823B4FAC76BB; + ReadData3E = 64'h8010000000000001; + ans = 64'h400B823B4FAC76BA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5178172\n"); + end + ReadData1E = 64'hC3EFAF68C726F8FD; + ReadData2E = 64'h3F4BFFFFFEFFFFFF; + ReadData3E = 64'h7FDC6FC6B7BA60EB; + ans = 64'h7FDC6FC6B7BA60EB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5179173\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hC02FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5180174\n"); + end + ReadData1E = 64'h3E123362378A5665; + ReadData2E = 64'hC20000000201FFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hBFF19B11CE9848C1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5181175\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h4012720AA4EB339F; + ans = 64'hC026C6FAAD8A6630; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5182176\n"); + end + ReadData1E = 64'h002FFEFFFFFFFFFD; + ReadData2E = 64'hA1DFEFFFFFFFFFFD; + ReadData3E = 64'hC1F00000003FFF7F; + ans = 64'hC1F00000003FFF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5183177\n"); + end + ReadData1E = 64'h3030000000000406; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5184178\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'hC100000000000020; + ReadData3E = 64'h3604045CE5C3135A; + ans = 64'h413000000000001F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5185179\n"); + end + ReadData1E = 64'hC09C99213A1593FA; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h402001FF80000000; + ans = 64'hC0BC91203A5593FC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5186180\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'hC0C9628722EA56EA; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5187181\n"); + end + ReadData1E = 64'h47E0000000002FFF; + ReadData2E = 64'h3F2BF3454382C780; + ReadData3E = 64'hFFE0047FFFFFFFFF; + ans = 64'hFFE0047FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5188182\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5189183\n"); + end + ReadData1E = 64'h401EFFFFFFF7FFFE; + ReadData2E = 64'h400BE9953BA91E42; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h403A0A4891C4DAE9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5190184\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'hBFC800000FFFFFFF; + ans = 64'hC37FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5191185\n"); + end + ReadData1E = 64'h402FE8DE96B2D333; + ReadData2E = 64'hB7F03FFFFFFFFDFF; + ReadData3E = 64'h47FFFFFBFDFFFFFF; + ans = 64'h47FFFFFBFDFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5192186\n"); + end + ReadData1E = 64'hC3E413DC0EE29162; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5193187\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h800FF007FFFFFFFF; + ReadData3E = 64'h00CFFFFFFFFFE3FF; + ans = 64'h00D007F803FFF1FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5194188\n"); + end + ReadData1E = 64'h7FE5F34635B96EA6; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h432000001FFFFFFA; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5195189\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h41CFFFFFFFF7FFEF; + ReadData3E = 64'h4000000000000001; + ans = 64'hC1FFFFFFFFD7FFEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5196190\n"); + end + ReadData1E = 64'hC7EFFFFFFFDFF7FF; + ReadData2E = 64'h002FFFFE00000000; + ReadData3E = 64'hC008BC83326CD610; + ans = 64'hC008BC83326CD610; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5197191\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5198192\n"); + end + ReadData1E = 64'hBF1FFFE00007FFFE; + ReadData2E = 64'hA3E1000000400000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h2310FFEF00443FBF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5199193\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h401008FFFFFFFFFF; + ans = 64'h401008FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5200194\n"); + end + ReadData1E = 64'hC1EE3844C5B7D3FE; + ReadData2E = 64'h43E8C8E5E50CD973; + ReadData3E = 64'hBD1FF7FFFFFF7FFF; + ans = 64'hC5E767EC5D189172; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5201195\n"); + end + ReadData1E = 64'h4020000200000003; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5202196\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h41AFFFFFE001FFFF; + ReadData3E = 64'hBA61008000000000; + ans = 64'hC1DFFFFFE001FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5203197\n"); + end + ReadData1E = 64'hC028000000000400; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'h41E000000000004F; + ans = 64'h41E000000000004F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5204198\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h47DC8B19E2BEC70C; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hC80C8B19E2BEC70B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5205199\n"); + end + ReadData1E = 64'hE02FFFFFDFFE0000; + ReadData2E = 64'h42A00007EFFFFFFF; + ReadData3E = 64'hAD900000000027FF; + ans = 64'hE2E00007DFFEF80F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5206200\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h4003FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5207201\n"); + end + ReadData1E = 64'h0E50000000008008; + ReadData2E = 64'hC0800FFFBFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5208202\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'hBF6FFFFEFFFF0000; + ans = 64'h400FF8000040003E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5209203\n"); + end + ReadData1E = 64'h3FBFFFFFFFFF800E; + ReadData2E = 64'h43D72967768E03CE; + ReadData3E = 64'hBFC0003FFFFFFF80; + ans = 64'h43A72967768DA733; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5210204\n"); + end + ReadData1E = 64'hC59FFFFFFFFFFF7E; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h458FFFFFFFFFFF80; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5211205\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h41E000040000FFFF; + ReadData3E = 64'h3FCFFFFFFF7FFFFF; + ans = 64'hC2100003FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5212206\n"); + end + ReadData1E = 64'hC03870CCCF02326A; + ReadData2E = 64'hBFEFFFFFFFFFFFFE; + ReadData3E = 64'h3FE0FFFFFFFFFFBF; + ans = 64'h4038F8CCCF023266; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5213207\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'hBFC00001007FFFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h3FF00001007FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5214208\n"); + end + ReadData1E = 64'h41FFFFE000001FFE; + ReadData2E = 64'hBFCB9A7B1F9168EF; + ReadData3E = 64'h0000000020000FFE; + ans = 64'hC1DB9A5F851664F6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5215209\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h402FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5216210\n"); + end + ReadData1E = 64'h434D2F496DB9A96E; + ReadData2E = 64'h3EEFBFFFFFFBFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h424CF4EADAD89030; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5217211\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h3D30800000000080; + ans = 64'h4040000000000007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5218212\n"); + end + ReadData1E = 64'h37F00000004000FE; + ReadData2E = 64'h37EFBFFFFFFFFFDF; + ReadData3E = 64'hB81FFFFFFFFC01FF; + ans = 64'hB81FFFFFFFFC01FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5219213\n"); + end + ReadData1E = 64'h41CFFF7FFF7FFFFF; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hC1EFFF7FFF7FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5220214\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h406AE16C351210A0; + ReadData3E = 64'hC1C484E36DAC7D9B; + ans = 64'hC1C484E6C9DA043D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5221215\n"); + end + ReadData1E = 64'h3F602001FFFFFFFF; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hBD3FE000000003FF; + ans = 64'hBF90200200007F7E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5222216\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'hB80000007FFEFFFF; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5223217\n"); + end + ReadData1E = 64'hB80007FFFFFFF7FF; + ReadData2E = 64'h3FEFFFFF7FFDFFFF; + ReadData3E = 64'h41CFFF8FFFFFFFFF; + ans = 64'h41CFFF8FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5224218\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h437BFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5225219\n"); + end + ReadData1E = 64'hC1D000020007FFFF; + ReadData2E = 64'hB8077BE4D07FE884; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5226220\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'hC01E19FAC5D7524A; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5227221\n"); + end + ReadData1E = 64'h4740000007FFFFC0; + ReadData2E = 64'hB09007FF7FFFFFFF; + ReadData3E = 64'hC0200003FFFF7FFF; + ans = 64'hC0200003FFFF7FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5228222\n"); + end + ReadData1E = 64'hAD6BF03B45338149; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5229223\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h3EFFFFFFFFC003FF; + ReadData3E = 64'h480C285816303DFD; + ans = 64'h480C285816303DFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5230224\n"); + end + ReadData1E = 64'hC23000000008001F; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'h3FB003FBFFFFFFFF; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5231225\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFF; + ReadData2E = 64'h291C000000000200; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5232226\n"); + end + ReadData1E = 64'hC34FFFFF01000000; + ReadData2E = 64'hC020000001FFFDFF; + ReadData3E = 64'hC17FFFFFC3FFFFFF; + ans = 64'h437FFFFF04DFFBDE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5233227\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5234228\n"); + end + ReadData1E = 64'h41C83FFFFFFFFFFE; + ReadData2E = 64'h47F78F8B265E6676; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h49D1DAC7731389A4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5235229\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h7FEFFFFFFFFFE3FF; + ans = 64'h7FEFFFFFFFFFE3FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5236230\n"); + end + ReadData1E = 64'h802FFF800000007F; + ReadData2E = 64'hC0100027FFFFFFFE; + ReadData3E = 64'h503000017FFFFFFE; + ans = 64'h503000017FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5237231\n"); + end + ReadData1E = 64'h640FFFFBFF000000; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5238232\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hBFF000003E000000; + ReadData3E = 64'h402F7FDFFFFFFFFF; + ans = 64'h4037BFF01EFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5239233\n"); + end + ReadData1E = 64'hC3E0000003FFF7FE; + ReadData2E = 64'h3CA0000000000001; + ReadData3E = 64'h484B7D65EB362BF7; + ans = 64'h484B7D65EB362BF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5240234\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'h98D7820E5E58C555; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3CA0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5241235\n"); + end + ReadData1E = 64'hBFB0000001000000; + ReadData2E = 64'hBE0FFF0000000100; + ReadData3E = 64'hC7F0000000021FFE; + ans = 64'hC7F0000000021FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5242236\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5243237\n"); + end + ReadData1E = 64'h498FF7FF80000000; + ReadData2E = 64'h400000FF7FFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h499FF9FE003803FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5244238\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hBFC010000000003F; + ans = 64'hC010808000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5245239\n"); + end + ReadData1E = 64'hC000000000040200; + ReadData2E = 64'hB7F0004000000FFE; + ReadData3E = 64'h5510000000010002; + ans = 64'h5510000000010002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5246240\n"); + end + ReadData1E = 64'h43FFFFC000003FFE; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h43FFFFC000003FFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5247241\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hBFF0000000802000; + ReadData3E = 64'h2CB003FFFFFFFF7E; + ans = 64'h4020000000801FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5248242\n"); + end + ReadData1E = 64'h3930000005FFFFFF; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h8340000004007FFE; + ans = 64'h3930000006000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5249243\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hBFC39DF49C0FBA49; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5250244\n"); + end + ReadData1E = 64'hB1A80139A3A087CE; + ReadData2E = 64'h3BDFFFF000020000; + ReadData3E = 64'hC0C0005FFFFFFFFF; + ans = 64'hC0C0005FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5251245\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5252246\n"); + end + ReadData1E = 64'h41EF0000000FFFFE; + ReadData2E = 64'hBBB7C00000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFE8FDE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5253247\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hB810000000001F7E; + ans = 64'hC03FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5254248\n"); + end + ReadData1E = 64'hA003A93B6E92F0B8; + ReadData2E = 64'h0000000004007FFF; + ReadData3E = 64'hC00FFFFFFFF8FFFF; + ans = 64'hC00FFFFFFFF8FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5255249\n"); + end + ReadData1E = 64'hC7FFFFFFFF000007; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'hC82FFFFFFF000006; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5256250\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hC1FFFFFFFFFFE001; + ReadData3E = 64'h224FFFFE00000010; + ans = 64'h422FFFFFFFFFDFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5257251\n"); + end + ReadData1E = 64'h43EFFFE000000FFF; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'h37F0000003EFFFFE; + ans = 64'h473FFFE000000FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5258252\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hFFE0000000001FC0; + ReadData3E = 64'hC010000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5259253\n"); + end + ReadData1E = 64'h3FFFFFC0007FFFFF; + ReadData2E = 64'h807728C304A79599; + ReadData3E = 64'h3C2FC00000007FFF; + ans = 64'h3C2FC00000007FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5260254\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5261255\n"); + end + ReadData1E = 64'hC300000001010000; + ReadData2E = 64'hBC6753EAA0CBF780; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h3F7753EAA242AA69; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5262256\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hC1C177D35A8A07AD; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5263257\n"); + end + ReadData1E = 64'hBFEFE40000000000; + ReadData2E = 64'h535FFFFFFFFFFFFE; + ReadData3E = 64'h3D6EAFF0C7D871D9; + ans = 64'hD35FE3FFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5264258\n"); + end + ReadData1E = 64'h35570FA2AA3939BE; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5265259\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hB80FFFFFDFFFFDFF; + ReadData3E = 64'hC22FF8007FFFFFFE; + ans = 64'hC22FF8007FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5266260\n"); + end + ReadData1E = 64'hBFC28DA3BF44EE71; + ReadData2E = 64'h7FFFFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFF; + ans = 64'h7FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5267261\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hBF018D6070C13608; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h3FE00231AC0E1828; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5268262\n"); + end + ReadData1E = 64'h801100000003FFFF; + ReadData2E = 64'h378553A96B4903D4; + ReadData3E = 64'h41FFFFDFFEFFFFFE; + ans = 64'h41FFFFDFFEFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5269263\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5270264\n"); + end + ReadData1E = 64'h0015D34DC5242F4B; + ReadData2E = 64'hBF8FFF0080000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5271265\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h2F8004000FFFFFFF; + ans = 64'h2F8004000FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5272266\n"); + end + ReadData1E = 64'hD19FFFFFE000000E; + ReadData2E = 64'hBFD0000000000BFE; + ReadData3E = 64'h17CFFF800001FFFF; + ans = 64'h517FFFFFE000180A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5273267\n"); + end + ReadData1E = 64'h36A0000001FFFFF7; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5274268\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hC02FE3D9D0256ACF; + ReadData3E = 64'h801FFFFBFFFFFF80; + ans = 64'h405FE3D9D0256ACD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5275269\n"); + end + ReadData1E = 64'hB0A00800007FFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hBFC0000000DFFFFE; + ans = 64'hBFC0000000DFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5276270\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'h3FF3A14DE15750B4; + ReadData3E = 64'h8010000000000001; + ans = 64'hC023A14DE15750B3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5277271\n"); + end + ReadData1E = 64'h40300004000003FF; + ReadData2E = 64'hC1EFFBFFF7FFFFFF; + ReadData3E = 64'h55FFFC003FFFFFFE; + ans = 64'h55FFFC003FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5278272\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h400FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5279273\n"); + end + ReadData1E = 64'h43E200001FFFFFFE; + ReadData2E = 64'hC00000000100007F; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hC3F200002120008F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5280274\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'hC1D0F5FBEC2B53D9; + ans = 64'hC1D0F5FBEB2B53D9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5281275\n"); + end + ReadData1E = 64'h3DE0001FFFFE0000; + ReadData2E = 64'h9021000000FFFFFE; + ReadData3E = 64'h45A003FFF0000000; + ans = 64'h45A003FFF0000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5282276\n"); + end + ReadData1E = 64'h7FE00000007FC000; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hFFE00000007FC000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5283277\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hC1EFFF7FFFFFFFFF; + ReadData3E = 64'h7FEEE00000000000; + ans = 64'h7FEEE00000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5284278\n"); + end + ReadData1E = 64'hA6A03FEFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'h49DFFF8000003FFF; + ans = 64'h49DFFF8000003FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5285279\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hFFE01000000003FE; + ReadData3E = 64'hFFE0000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5286280\n"); + end + ReadData1E = 64'h271730BAB1D8FD2A; + ReadData2E = 64'h380000000007FF7F; + ReadData3E = 64'h43C0000002FFFFFE; + ans = 64'h43C0000002FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5287281\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5288282\n"); + end + ReadData1E = 64'h4181800000000000; + ReadData2E = 64'hFFFFFF7FFEFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hFFFFFF7FFEFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5289283\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'h414800001FFFFFFE; + ans = 64'h414800101FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5290284\n"); + end + ReadData1E = 64'h5BE000000007EFFF; + ReadData2E = 64'hBEFFFFF7FFFFFFE0; + ReadData3E = 64'h47F000000000005E; + ans = 64'hDAEFFFF8000FDFDA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5291285\n"); + end + ReadData1E = 64'h54D00010000001FF; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'hD5000010000001FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5292286\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hA27FFFFEFE000000; + ReadData3E = 64'h438000100FFFFFFF; + ans = 64'h438000100FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5293287\n"); + end + ReadData1E = 64'h3FBFFFF800000001; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'hF1515A345BE32953; + ans = 64'hF1515A345BE32953; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5294288\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hBCAF910F091FB519; + ReadData3E = 64'h4000000000000001; + ans = 64'h4000000000000005; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5295289\n"); + end + ReadData1E = 64'hC0C00004007FFFFE; + ReadData2E = 64'hBFF003DFFFFFFFFF; + ReadData3E = 64'hC03FFFFFFFFFBE00; + ans = 64'h40BFE7C802F03E3C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5296290\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5297291\n"); + end + ReadData1E = 64'hCF10000080001000; + ReadData2E = 64'hC007D30E26538712; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h4F27D30EE4EC1018; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5298292\n"); + end + ReadData1E = 64'hC01FFFFFFFFFFFFE; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hC040000007FFFEFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5299293\n"); + end + ReadData1E = 64'hBFBFFFFFFFFFFFE1; + ReadData2E = 64'hC0B0FFFEFFFFFFFF; + ReadData3E = 64'hBFE20000000001FF; + ans = 64'h4080FB7EFFFFFFEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5300294\n"); + end + ReadData1E = 64'hBFE1C329F201F04D; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5301295\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h001FFFFFFE000003; + ReadData3E = 64'hCCC0000001FFFFF7; + ans = 64'hCCC0000001FFFFF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5302296\n"); + end + ReadData1E = 64'hC52FFEFFC0000000; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h400C62A4FDF90AD6; + ans = 64'h400C62A4FDF90AD6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5303297\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'hD850010003FFFFFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h5BA0010003FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5304298\n"); + end + ReadData1E = 64'hC010CD4982DD6BD4; + ReadData2E = 64'h3FEDFFBFFFFFFFFF; + ReadData3E = 64'h41C0FFF000000000; + ans = 64'h41C0FFEFFE07F596; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5305299\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5306300\n"); + end + ReadData1E = 64'hFFFD3164155DD8BC; + ReadData2E = 64'h43CFFFFFFF7FFDFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'hFFFD3164155DD8BC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5307301\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h40347004C7ACC6C5; + ans = 64'h40347004C7ACC6C5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5308302\n"); + end + ReadData1E = 64'h3FC25B45E81BF2BA; + ReadData2E = 64'h7FE0000000FFEFFE; + ReadData3E = 64'h3C4FFFFDFFFFF7FE; + ans = 64'h7FB25B45E94194BB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5309303\n"); + end + ReadData1E = 64'hBFCF7FFFFFFFF7FF; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5310304\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h402E200000000000; + ReadData3E = 64'hBFC3FFFFFFFFFFF8; + ans = 64'hC37E200000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5311305\n"); + end + ReadData1E = 64'hC0000000100000FE; + ReadData2E = 64'h3FD0000000000000; + ReadData3E = 64'hFFD01656577AAC16; + ans = 64'hFFD01656577AAC16; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5312306\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h40800010000001FE; + ReadData3E = 64'h0000000000000001; + ans = 64'hC3D00010000001FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5313307\n"); + end + ReadData1E = 64'hC3D040000FFFFFFF; + ReadData2E = 64'hB7F35676D4CFEC7C; + ReadData3E = 64'h401BFFFFFFFFFEFF; + ans = 64'h401BFFFFFFFFFEFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5314308\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC330000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5315309\n"); + end + ReadData1E = 64'hBFBFFFFFBFFFFFFB; + ReadData2E = 64'h380000000000407F; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5316310\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h3FCD4152B558AE01; + ans = 64'hC33FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5317311\n"); + end + ReadData1E = 64'hDC9103FFFFFFFFFF; + ReadData2E = 64'hC19003FFF7FFFFFE; + ReadData3E = 64'hC01000107FFFFFFE; + ans = 64'h5E310840F77DFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5318312\n"); + end + ReadData1E = 64'h37ECDE989CE6315C; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5319313\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h3FFFFFF7F7FFFFFE; + ReadData3E = 64'hBEF4992580F240DA; + ans = 64'hC34FFFF7F7FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5320314\n"); + end + ReadData1E = 64'h4010007FFFFEFFFF; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h41CFFEFFFFFFFFFB; + ans = 64'h41CFFF0004001FFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5321315\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'hEE4FFFFE0000000F; + ReadData3E = 64'h4340000000000001; + ans = 64'h719FFFFE0000000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5322316\n"); + end + ReadData1E = 64'h41EFFFE020000000; + ReadData2E = 64'hC7FF01FFFFFFFFFF; + ReadData3E = 64'hDA4FE0000000001F; + ans = 64'hDA4FE0000000001F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5323317\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC367FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5324318\n"); + end + ReadData1E = 64'hB73FFFFFFFFF807E; + ReadData2E = 64'h444000000001FFFC; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5325319\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hC1D0800000FFFFFF; + ans = 64'hC370000004200000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5326320\n"); + end + ReadData1E = 64'h43FD72A87030320B; + ReadData2E = 64'h43F532AF3E8738CD; + ReadData3E = 64'hC41FFFFFFFFFFB7E; + ans = 64'h480381E2F562A802; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5327321\n"); + end + ReadData1E = 64'hBFEFCB21E81426A0; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5328322\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h402FFFFFFFFF7FFC; + ReadData3E = 64'hBFB001FFFFF7FFFE; + ans = 64'hC37FFFFFFFFF7FFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5329323\n"); + end + ReadData1E = 64'h41E00000001EFFFE; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h3A08000000000400; + ans = 64'h45400000001EFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5330324\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'hFC7FFFFFFFF7FFFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h7FCFFFFFFFF7FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5331325\n"); + end + ReadData1E = 64'h419FF5FFFFFFFFFF; + ReadData2E = 64'h3FEEFFFFFE000000; + ReadData3E = 64'h641FFFFFFFFF7FFB; + ans = 64'h641FFFFFFFFF7FFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5332326\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5333327\n"); + end + ReadData1E = 64'h47F000FFFFFFFFFB; + ReadData2E = 64'hC4179E0569BF1A20; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hCC179F7F4A15B60A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5334328\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h7FE85FD8479057CB; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5335329\n"); + end + ReadData1E = 64'h22A9E4C9B41F526C; + ReadData2E = 64'hBFDC0000000001FF; + ReadData3E = 64'hBFB604A0ED2A78F8; + ans = 64'hBFB604A0ED2A78F8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5336330\n"); + end + ReadData1E = 64'h381000000007FFBF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5337331\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'hC7FFFFFFFFFFFF1E; + ReadData3E = 64'hBE74A64E100CEF11; + ans = 64'h4B4FFFFFFFFFFF1E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5338332\n"); + end + ReadData1E = 64'h3E22D5A5261042A6; + ReadData2E = 64'h800FFFFFFFFFFFFF; + ReadData3E = 64'h47EFFBFFFFFFFFF8; + ans = 64'h47EFFBFFFFFFFFF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5339333\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h381FFFFFDFFFFFF7; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h3C9FFFFC00000402; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5340334\n"); + end + ReadData1E = 64'hC0B1CBF9423B7281; + ReadData2E = 64'h404FFFFFFFFFFDF7; + ReadData3E = 64'hBFD3FFFFFFFEFFFE; + ans = 64'hC111CBFA823B715F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5341335\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5342336\n"); + end + ReadData1E = 64'hBFF000004000001F; + ReadData2E = 64'h3E801FFFFFFFFFFC; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5343337\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'hBFF7F536A96C4593; + ans = 64'hBFDFD4DAA5B11648; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5344338\n"); + end + ReadData1E = 64'hBFEEBC0B4D5AEC9B; + ReadData2E = 64'h3F7FFFFFFFFFFDFF; + ReadData3E = 64'h801FFFBFFFFFFFF8; + ans = 64'hBF7EBC0B4D5AEAAE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5345339\n"); + end + ReadData1E = 64'h0C700007FDFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5346340\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h3FFFFFFFFFB80000; + ReadData3E = 64'hC09FDFFFFFF7FFFF; + ans = 64'hC34FFFFFFFB803FC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5347341\n"); + end + ReadData1E = 64'h3FF2000000FFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h3EFFFFF0000003FF; + ans = 64'hBFE1FFC0011FFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5348342\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h62C9DC72D829C393; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5349343\n"); + end + ReadData1E = 64'h8029CD027833965C; + ReadData2E = 64'h43DCE85EAF079BB9; + ReadData3E = 64'hC66FFBFC00000000; + ans = 64'hC66FFBFC00000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5350344\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5351345\n"); + end + ReadData1E = 64'h3FCFF000000FFFFE; + ReadData2E = 64'h3E10000080000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h400000000007FBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5352346\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hC367FFFFFFFFFEFE; + ans = 64'hC363FFFFFFFFFEFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5353347\n"); + end + ReadData1E = 64'h01800080000003FE; + ReadData2E = 64'hBFCFEFFFFFFFFFC0; + ReadData3E = 64'hBF5F80007FFFFFFF; + ans = 64'hBF5F80007FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5354348\n"); + end + ReadData1E = 64'h3FC00007FFFFFF80; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h0010000000000000; + ans = 64'hBFD00007FFFFFF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5355349\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h80100000000C0000; + ReadData3E = 64'hBC8503ECC18F8BE8; + ans = 64'hBC8503ECC18F8BE8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5356350\n"); + end + ReadData1E = 64'h3EB00000FDFFFFFF; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'h002FFBFE00000000; + ans = 64'hBEC00000FE000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5357351\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'hC00FFFFFFFC0007F; + ReadData3E = 64'hC010000000000001; + ans = 64'h435FFFFFFFC0007E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5358352\n"); + end + ReadData1E = 64'h3CA0200400000000; + ReadData2E = 64'hC1D3FFFFEFFFFFFF; + ReadData3E = 64'hB7FFFFFFFFBFF7FE; + ans = 64'hBE842804EFDFFBFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5359353\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4360000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5360354\n"); + end + ReadData1E = 64'hC3EF7FFBFFFFFFFF; + ReadData2E = 64'h1B0E000000000004; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBCAFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5361355\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hC3C001EFFFFFFFFE; + ans = 64'hC3BF03DFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5362356\n"); + end + ReadData1E = 64'h413FFFBFEFFFFFFE; + ReadData2E = 64'h3930000000005FFE; + ReadData3E = 64'h53B000000FFFDFFF; + ans = 64'h53B000000FFFDFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5363357\n"); + end + ReadData1E = 64'h4340020000400000; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5364358\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h402FFFFFEFFFFFFF; + ReadData3E = 64'h3CBFFFFFF7FFFFDF; + ans = 64'hC37FFFFFEFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5365359\n"); + end + ReadData1E = 64'h3D1DDE03D9D54D4C; + ReadData2E = 64'hFFE0000000000000; + ReadData3E = 64'hC1FEFFFFF8000000; + ans = 64'hFD0DDE03D9D54D4C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5366360\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'h402000004001FFFF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hC37000004001FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5367361\n"); + end + ReadData1E = 64'hFFE631AD2024B9BB; + ReadData2E = 64'hC09F7FFFFFFFFFDF; + ReadData3E = 64'h4800000005FFFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5368362\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5369363\n"); + end + ReadData1E = 64'h43D08000000003FE; + ReadData2E = 64'h7E00200000100000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5370364\n"); + end + ReadData1E = 64'hC340000000000000; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'hC1DFFBFBFFFFFFFF; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5371365\n"); + end + ReadData1E = 64'hDE8FFFFFF1000000; + ReadData2E = 64'h11AFFFFFFFFFFFD0; + ReadData3E = 64'hB1561BB541DAA065; + ans = 64'hB1561BC541DA98E5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5372366\n"); + end + ReadData1E = 64'h48AFFFFFFFFFFBF6; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5373367\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h41FFFDFEFFFFFFFE; + ReadData3E = 64'hDC1FF000007FFFFF; + ans = 64'hDC1FF000007FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5374368\n"); + end + ReadData1E = 64'hC1FFFFFFFFF801FF; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'hC8001000000007FE; + ans = 64'hC8001000000007FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5375369\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h3FC0007FFFFFFFFE; + ReadData3E = 64'h8010000000000001; + ans = 64'hC310007FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5376370\n"); + end + ReadData1E = 64'hC035A044BE894E30; + ReadData2E = 64'hFFFEFFF7FFFFFFFE; + ReadData3E = 64'hC244000003FFFFFE; + ans = 64'hFFFEFFF7FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5377371\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5378372\n"); + end + ReadData1E = 64'hC07FFFFF80001FFF; + ReadData2E = 64'h3FD3FFFFFFFFFFEF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hC062FFFFB00013EE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5379373\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h3FAE092E3B0E9B86; + ans = 64'hBFFF0FB68E278B25; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5380374\n"); + end + ReadData1E = 64'hFFEFE000003FFFFF; + ReadData2E = 64'hC1CFFFFE0000003F; + ReadData3E = 64'h41FFFFFFFFFDFF7F; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5381375\n"); + end + ReadData1E = 64'h3FB0000001FFFFEE; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD10000001FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5382376\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h402A31785F0C4BEE; + ReadData3E = 64'hCECFFFFFFFBFFFFE; + ans = 64'hCECFFFFFFFBFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5383377\n"); + end + ReadData1E = 64'hB7F00000000BFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hC10FFFFFFFBFFDFE; + ans = 64'hC10FFFFFFFBFFDFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5384378\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h3FFFFFFF7FFFFFFE; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5385379\n"); + end + ReadData1E = 64'hBF3DA981ECA74782; + ReadData2E = 64'hC0F0002000003FFF; + ReadData3E = 64'h380F1D9EB4B48501; + ans = 64'h403DA9BD3FAB9775; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5386380\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5387381\n"); + end + ReadData1E = 64'hBFEFFFE000100000; + ReadData2E = 64'hC1CFFFDFC0000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h41CFFFBFBFB03FF0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5388382\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h37EFFFFFFFFFF804; + ans = 64'hC340000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5389383\n"); + end + ReadData1E = 64'hC3F3FFFFFFFFEFFE; + ReadData2E = 64'hB4BFFFDFFFFFFFF6; + ReadData3E = 64'h43DFFFFFFFFFF7EF; + ans = 64'h43DFFFFFFFFFF7EF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5390384\n"); + end + ReadData1E = 64'hC0AF9FFFFFFFFFFF; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'hC0BF9FFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5391385\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h403FFFFFFFFFFFFF; + ReadData3E = 64'hA5800000000FFF80; + ans = 64'hC390000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5392386\n"); + end + ReadData1E = 64'h409FFFFF07FFFFFF; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h3E3FE00000400000; + ans = 64'h40BFFFFF08001FDD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5393387\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'hC0C00000FFFFFFC0; + ReadData3E = 64'h4000000000000001; + ans = 64'h44100000FFFFFFC1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5394388\n"); + end + ReadData1E = 64'hC000FFEFFFFFFFFE; + ReadData2E = 64'h41D00000020007FF; + ReadData3E = 64'h3E6FFFBFFFFFFFFF; + ans = 64'hC1E0FFF00220067D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5395389\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC370000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5396390\n"); + end + ReadData1E = 64'hC3CFFFC000002000; + ReadData2E = 64'hC003FFFFFF7FFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h43E3FFD7FF8014FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5397391\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'hC1F45CE811722C92; + ans = 64'hC690000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5398392\n"); + end + ReadData1E = 64'hE77000004000000F; + ReadData2E = 64'h380FFF0000000006; + ReadData3E = 64'h4FBFFF7FFFFFFFDF; + ans = 64'hDF8FFF007FFC0024; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5399393\n"); + end + ReadData1E = 64'hC0016C62FB48959C; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'hC340000000000000; + ans = 64'hC3656C62FB48959B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5400394\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h3F61EBD25E062FB6; + ReadData3E = 64'hBA1FFFFFFFFDFEFF; + ans = 64'hC2B1EBD25E062FB7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5401395\n"); + end + ReadData1E = 64'hC34FF0000003FFFE; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hC0101442690E84E3; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5402396\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h42C0279796F2329E; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hC610279796F2329F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5403397\n"); + end + ReadData1E = 64'hB800000000000FFB; + ReadData2E = 64'hBFDFFF801FFFFFFE; + ReadData3E = 64'h3FFBF5A1937A49BB; + ans = 64'h3FFBF5A1937A49BB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5404398\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5405399\n"); + end + ReadData1E = 64'hC1765FB248B851CA; + ReadData2E = 64'h3FCF008000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5406400\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h407FFFFFFFF80FFF; + ans = 64'h407FFFFFFFF80FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5407401\n"); + end + ReadData1E = 64'h002000001FFFFFEF; + ReadData2E = 64'h434FFFFE00000000; + ReadData3E = 64'hB80FFFF000000007; + ans = 64'hB80FFFF000000007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5408402\n"); + end + ReadData1E = 64'h47F0000000000000; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5409403\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h402521B25D1AE5FE; + ReadData3E = 64'h4C1FFF7FFFFBFFFF; + ans = 64'h4C1FFF7FFFFBFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5410404\n"); + end + ReadData1E = 64'hCAA00000020003FF; + ReadData2E = 64'h8010000000000001; + ReadData3E = 64'h401FFFFFFFEFFFFF; + ans = 64'h401FFFFFFFEFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5411405\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'hBCCD81F011C9258C; + ReadData3E = 64'h0000000000000001; + ans = 64'h401D81F011C9258E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5412406\n"); + end + ReadData1E = 64'hBF00000FFFFF7FFF; + ReadData2E = 64'hC04FF20B246B8D26; + ReadData3E = 64'h47E1FFFFFFFFFFFD; + ans = 64'h47E1FFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5413407\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h3FF0000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5414408\n"); + end + ReadData1E = 64'h5BD000000000207F; + ReadData2E = 64'h434000007FFDFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h5F2000007FFE207E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5415409\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h203AF3C4B8092FD5; + ans = 64'h4320000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5416410\n"); + end + ReadData1E = 64'h4010000000010004; + ReadData2E = 64'h4340400000007FFE; + ReadData3E = 64'hBFDB7CFB23E78736; + ans = 64'h4360400000018402; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5417411\n"); + end + ReadData1E = 64'h38DFE00000FFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5418412\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h3C9F753682320691; + ReadData3E = 64'h4070B370E3E96F5A; + ans = 64'h4070A3B648A85657; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5419413\n"); + end + ReadData1E = 64'hFFE000000001FEFE; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h381FFFFFFFFFB800; + ans = 64'h7FD000000001FEFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5420414\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h002FFFFFE00003FF; + ReadData3E = 64'h4340000000000001; + ans = 64'h4340000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5421415\n"); + end + ReadData1E = 64'hBFF0000002000002; + ReadData2E = 64'hB0EFFFFBFEFFFFFF; + ReadData3E = 64'h403FFFFDFFFFFFFF; + ans = 64'h403FFFFDFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5422416\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC33FFFFFFFFFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5423417\n"); + end + ReadData1E = 64'hBD20736884E878FF; + ReadData2E = 64'hBFC09E908175DCE5; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FE0000000000021; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5424418\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'hBE1FFFBFFFFFFFF6; + ans = 64'h4350000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5425419\n"); + end + ReadData1E = 64'h7FD0000001FFFFFE; + ReadData2E = 64'h41FFFF000000FFFF; + ReadData3E = 64'h002FFFFFFFFBFFFB; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5426420\n"); + end + ReadData1E = 64'h000FEFFFFFFFFE00; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5427421\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h4F3A5C7B785C2745; + ReadData3E = 64'hC00237D575A8B332; + ans = 64'hD28A5C7B785C2747; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5428422\n"); + end + ReadData1E = 64'hC03FFFF001000000; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'hB620000081FFFFFF; + ans = 64'h405FFFF001000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5429423\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'hBFFFFFFFFFF00003; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h434FFFFFFFF00004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5430424\n"); + end + ReadData1E = 64'h002FFFFFF6FFFFFF; + ReadData2E = 64'hC1BBFFFFFFFFFDFE; + ReadData3E = 64'h41C0000400000000; + ans = 64'h41C0000400000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5431425\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4690000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5432426\n"); + end + ReadData1E = 64'h053B461FABAD1965; + ReadData2E = 64'h99D400003FFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h800FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5433427\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h3FB00000001003FF; + ans = 64'h46A0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5434428\n"); + end + ReadData1E = 64'h3FCFF7FDFFFFFFFE; + ReadData2E = 64'h51700000000100FF; + ReadData3E = 64'h3FBFE00000000200; + ans = 64'h514FF7FE0002017B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5435429\n"); + end + ReadData1E = 64'hC00FFDFFFFF00000; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h4010000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5436430\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'h7FE41774EEE28BFA; + ReadData3E = 64'h37EFFFFF000000FF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5437431\n"); + end + ReadData1E = 64'hC1D0001FFFFFFEFF; + ReadData2E = 64'hFFEFFFFFFFFFFFFE; + ReadData3E = 64'h7FE00000020001FF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5438432\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'hC00DFFE000000000; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h435DFFE000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5439433\n"); + end + ReadData1E = 64'h43EEFFFFFFFFE000; + ReadData2E = 64'h001674BBC802F51F; + ReadData3E = 64'hB7E4D3ACAD125ECF; + ans = 64'hB7E4D3ACAD125ECF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5440434\n"); + end + ReadData1E = 64'hC340000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5441435\n"); + end + ReadData1E = 64'h3FE00201FFFFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFC1FF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5442436\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'hBF1FFFFFEFFFF800; + ans = 64'hBF1FFFFFEFFFF800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5443437\n"); + end + ReadData1E = 64'h41F8096BDA05D502; + ReadData2E = 64'h47F0000010000001; + ReadData3E = 64'h427FFFFFFEFF7FFF; + ans = 64'h49F8096BF20F40DE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5444438\n"); + end + ReadData1E = 64'h556FFFFFFFFF7FFE; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5445439\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h37E3FFFFFFFFE000; + ReadData3E = 64'h40377E048F3E398F; + ans = 64'h40377E048F3E398F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5446440\n"); + end + ReadData1E = 64'h40203FFFEFFFFFFF; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'hC80F9AFDFA0EBC11; + ans = 64'hC80F9AFDFA0EBC11; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5447441\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h095400000000000E; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5448442\n"); + end + ReadData1E = 64'hBFBAC18BBFA1F2A9; + ReadData2E = 64'h76235B1D6D8EF776; + ReadData3E = 64'h4801445CA9740230; + ans = 64'hF5F02F19FA329013; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5449443\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5450444\n"); + end + ReadData1E = 64'h271FFFFFEFFFFFFD; + ReadData2E = 64'h743800001FFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h5B68000013FFFFEC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5451445\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'hD03F1F8ABC5990EB; + ans = 64'hD03F1F8ABC5990EB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5452446\n"); + end + ReadData1E = 64'hB7F0003FEFFFFFFF; + ReadData2E = 64'h41EC54C9B148EA25; + ReadData3E = 64'hC13FFFFFFC000400; + ans = 64'hC13FFFFFFC000400; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5453447\n"); + end + ReadData1E = 64'h41DF80FFFFFFFFFF; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h0010000000000000; + ans = 64'h41CF80FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5454448\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'hB37022E00D1D2104; + ReadData3E = 64'h3EC0000400000000; + ans = 64'h3EC0000400000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5455449\n"); + end + ReadData1E = 64'hBF2FFFFFFF87FFFF; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h400D52E7C8DAF3B8; + ans = 64'h400D5267C8DAF598; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5456450\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'hC03FFFFFEFF00000; + ReadData3E = 64'hC010000000000001; + ans = 64'h439FFFFFEFEFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5457451\n"); + end + ReadData1E = 64'hFFE0000800000002; + ReadData2E = 64'hFDB021FFFFFFFFFF; + ReadData3E = 64'h3FF00040000003FE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5458452\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hC35FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5459453\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hB7F0E5EC72AEF363; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5460454\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h7FFFFFFFEFFFFEFF; + ans = 64'h7FFFFFFFEFFFFEFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5461455\n"); + end + ReadData1E = 64'h067000001FFFFFFD; + ReadData2E = 64'h3800000001FFFFDF; + ReadData3E = 64'hBFD00040000007FF; + ans = 64'hBFD00040000007FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5462456\n"); + end + ReadData1E = 64'hBFF115E08501644D; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5463457\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h3FE525F794266E1B; + ReadData3E = 64'h41F1EBB38B43C690; + ans = 64'hC34525F704C8D1C0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5464458\n"); + end + ReadData1E = 64'h43FE2E4AD459A84E; + ReadData2E = 64'h4010000000000001; + ReadData3E = 64'h3FE07FFFFFC00000; + ans = 64'h441E2E4AD459A850; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5465459\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h4020000001FFF800; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hC380000001FFF7FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5466460\n"); + end + ReadData1E = 64'hFFEFFCFFFFFFFFFE; + ReadData2E = 64'hB8107FFFFFFFFFFC; + ReadData3E = 64'h5BC89E9F3A1CE5ED; + ans = 64'h78107E73FFFFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5467461\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hC6A0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5468462\n"); + end + ReadData1E = 64'h43C4400000000000; + ReadData2E = 64'h3330000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5469463\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h4010008001FFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5470464\n"); + end + ReadData1E = 64'hBE327BE5C2505E5A; + ReadData2E = 64'h4060080010000000; + ReadData3E = 64'hDE1C3FFFFFFFFFFF; + ans = 64'hDE1C3FFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5471465\n"); + end + ReadData1E = 64'h7A907FFFFFFFFFFB; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5472466\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'hBF6FFFFFFFFBFE00; + ReadData3E = 64'hBC00020000000002; + ans = 64'h42CFFFFFFFFBFDFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5473467\n"); + end + ReadData1E = 64'hC1CF6FFFFFFFFFFF; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'hBF50030000000000; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5474468\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h4020000020000000; + ReadData3E = 64'h8010000000000001; + ans = 64'hC38000001FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5475469\n"); + end + ReadData1E = 64'hC3CFFBFFFFFFFFBF; + ReadData2E = 64'h3FDB2E6E77A5552E; + ReadData3E = 64'h43417C8F54300B11; + ans = 64'hC3BB080F8B2E0036; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5476470\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h0037FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5477471\n"); + end + ReadData1E = 64'hC02003FDFFFFFFFE; + ReadData2E = 64'hC1E0000004000010; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h421003FE0420FF8E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5478472\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'hBFB0010000000000; + ans = 64'hBFB0010000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5479473\n"); + end + ReadData1E = 64'hFFDF7FDFFFFFFFFF; + ReadData2E = 64'hC0DFFFFF00000FFF; + ReadData3E = 64'h466744C32B892ED4; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5480474\n"); + end + ReadData1E = 64'hB7F2FDB3CF6D4D65; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5481475\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'hC34FF03FFFFFFFFF; + ReadData3E = 64'hC7EFFFFFFFBFFFFA; + ans = 64'hC7EFFFFE00BBFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5482476\n"); + end + ReadData1E = 64'hBFD0200000001FFE; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'hC76BA023CB2D93CE; + ans = 64'hC76BA023CB2D93CE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5483477\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h80291A13B9E67925; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFE0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5484478\n"); + end + ReadData1E = 64'hFFFFFFFFFE000003; + ReadData2E = 64'hC01FF3FFFFFFFFFE; + ReadData3E = 64'hBFBFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFE000003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5485479\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5486480\n"); + end + ReadData1E = 64'h802C1E6D4BBEDA2F; + ReadData2E = 64'hC3DF56EE1C7B2129; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5487481\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h4EAFFDFFFFFEFFFF; + ans = 64'h4EAFFDFFFFFEFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5488482\n"); + end + ReadData1E = 64'h002000005FFFFFFE; + ReadData2E = 64'h47FDFFFFFFDFFFFF; + ReadData3E = 64'h41DFFFFFFFFFFFFF; + ans = 64'h41DFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5489483\n"); + end + ReadData1E = 64'hC1D0000000201FFE; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h8000000000000000; + ans = 64'h41C0000000201FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5490484\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h3FF4BA96E36C5C9A; + ReadData3E = 64'hBC30000000030000; + ans = 64'hC354BA96E36C5C99; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5491485\n"); + end + ReadData1E = 64'h381FFF000FFFFFFE; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hC0108000007FFFFF; + ans = 64'hC0108000007FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5492486\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h40300000FFFFFE00; + ReadData3E = 64'h4000000000000001; + ans = 64'hC3900000FFFFFDFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5493487\n"); + end + ReadData1E = 64'h4D700FFFFFFF7FFF; + ReadData2E = 64'h414FFF0000000080; + ReadData3E = 64'hC1E0000008007FFF; + ans = 64'h4ED00F7F7FFF8043; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5494488\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h435FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5495489\n"); + end + ReadData1E = 64'hBCA12A961BF32DFF; + ReadData2E = 64'hB9400013FFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h35F12AAB912ED0EE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5496490\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'hC3D025FA9CB114F9; + ans = 64'hC3CFCBF5396229F2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5497491\n"); + end + ReadData1E = 64'h41DFFFF000020000; + ReadData2E = 64'h001629440E88ABFC; + ReadData3E = 64'h3810001FFF7FFFFF; + ans = 64'h3810001FFF7FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5498492\n"); + end + ReadData1E = 64'hB7F0000003EFFFFF; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5499493\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'h3F9D064A5FF5EAB4; + ReadData3E = 64'h3F6000004000FFFF; + ans = 64'hC2FD064A5FF5EAB3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5500494\n"); + end + ReadData1E = 64'h5D2FF7FFEFFFFFFE; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'h3E6FFEFFFFF7FFFF; + ans = 64'hDD5FF7FFEFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5501495\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'hBFD0001000100000; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h43300010000FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5502496\n"); + end + ReadData1E = 64'hBE2FFFF00000003F; + ReadData2E = 64'hC7FFFFFFFFDBFFFF; + ReadData3E = 64'h41EFFFFE00000000; + ans = 64'h463FFFEFFFDC0050; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5503497\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h46AFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5504498\n"); + end + ReadData1E = 64'h32C0000000017FFF; + ReadData2E = 64'hBFEFFFF000004000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5505499\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h45F8000000400000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5506500\n"); + end + ReadData1E = 64'hBFE0001FFFFBFFFE; + ReadData2E = 64'hC3F16EDD45200654; + ReadData3E = 64'h41A0000000000027; + ans = 64'h43E16F0022D734DB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5507501\n"); + end + ReadData1E = 64'h43C43FFFFFFFFFFF; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5508502\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFF; + ReadData2E = 64'hFFF0000001EFFFFF; + ReadData3E = 64'hB980007FFFFFFFBF; + ans = 64'hFFF8000001EFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5509503\n"); + end + ReadData1E = 64'h8020000003FFFFFB; + ReadData2E = 64'hFFFFFFFFFFFFFFFF; + ReadData3E = 64'hC000007BFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5510504\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h401FFFFFBFEFFFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'hC37FFFFFBFEFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5511505\n"); + end + ReadData1E = 64'h41CFFFFF00004000; + ReadData2E = 64'h47F0000000000480; + ReadData3E = 64'hC3DFFFFFF0000001; + ans = 64'h49CFFFFF00004900; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5512506\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h836FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5513507\n"); + end + ReadData1E = 64'h3FFDFFFFFFFFFFFF; + ReadData2E = 64'h43F817F19D5256E1; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h44069672837D3172; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5514508\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h40264AE5FA9FF433; + ans = 64'h40264AE5FA9FF433; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5515509\n"); + end + ReadData1E = 64'hBFEFFFFFFFFFFFBA; + ReadData2E = 64'h402000000000BFFE; + ReadData3E = 64'hC1DFF00000000002; + ans = 64'hC1DFF00002000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5516510\n"); + end + ReadData1E = 64'h3CAFFF00000001FF; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5517511\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'hC1FD713D4A7358AB; + ReadData3E = 64'h3FD0173C56125345; + ans = 64'h455D713D4A7358A9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5518512\n"); + end + ReadData1E = 64'hB4170A33CBFFDEA1; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFBFBFFFFFFE; + ans = 64'hBFEFFFBFBFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5519513\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h5A4003FFFFFFBFFF; + ReadData3E = 64'h4340000000000001; + ans = 64'hDDA003FFFFFFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5520514\n"); + end + ReadData1E = 64'hC3EFFFFEEFFFFFFE; + ReadData2E = 64'hC022C1B62BE57DE7; + ReadData3E = 64'h7FEE0000003FFFFF; + ans = 64'h7FEE0000003FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5521515\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC353FFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5522516\n"); + end + ReadData1E = 64'h43F7B0632707C69A; + ReadData2E = 64'hC7FF7FFFFFC00000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hCC0751A19A3C46B9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5523517\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h43F0000000FFFFDF; + ans = 64'h43EFFC0001FFFFBE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5524518\n"); + end + ReadData1E = 64'h3CDFE0000003FFFE; + ReadData2E = 64'hBFF0B8A2A808F179; + ReadData3E = 64'hC1F70AADC4F681B8; + ans = 64'hC1F70AADC4F681B8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5525519\n"); + end + ReadData1E = 64'h43EFFFFFEBFFFFFF; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5526520\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'hBFF0000002FFFFFF; + ReadData3E = 64'hBFAFFFFFFFEFFDFF; + ans = 64'h4350000002FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5527521\n"); + end + ReadData1E = 64'hBF98CFEEF2FB2A4B; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'hBFCFFFE0000007FF; + ans = 64'hBFD18CEEEF2FB6A4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5528522\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h90F000000003FFE0; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hBFF0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5529523\n"); + end + ReadData1E = 64'h43CFFFFFBEFFFFFF; + ReadData2E = 64'h36C2000007FFFFFE; + ReadData3E = 64'h4000040000000001; + ans = 64'h4000040000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5530524\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hC35FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5531525\n"); + end + ReadData1E = 64'hC02FFFDFFFFFF7FF; + ReadData2E = 64'hB7EFF8000FFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h382FF7E017FFE7FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5532526\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h47FC3F1E5C9BC9CA; + ans = 64'h47FC3F1E5C9BC9CA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5533527\n"); + end + ReadData1E = 64'h412C0000FFFFFFFF; + ReadData2E = 64'hC03000000003FFE0; + ReadData3E = 64'hBEE000004000007F; + ans = 64'hC16C000100070FC7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5534528\n"); + end + ReadData1E = 64'h3CA3C967DB006DC6; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5535529\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h43CFDFF800000000; + ReadData3E = 64'hBFDFFE001FFFFFFE; + ans = 64'hC72FDFF7FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5536530\n"); + end + ReadData1E = 64'hC7F9B54EB8C14387; + ReadData2E = 64'h4340000000000000; + ReadData3E = 64'hB7E000007FFFFFF0; + ans = 64'hCB49B54EB8C14387; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5537531\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'hC4D0000000007FBF; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h4830000000007FBE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5538532\n"); + end + ReadData1E = 64'hC02BDF29BC43B3DB; + ReadData2E = 64'hFFEFFFFFFFFFF010; + ReadData3E = 64'h3FD400001FFFFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5539533\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5540534\n"); + end + ReadData1E = 64'h80174CD8F7AB2AC0; + ReadData2E = 64'hBCAC902E0CC5111D; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5541535\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hC7E6B68E99FE64DB; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5542536\n"); + end + ReadData1E = 64'hC0000400000003FE; + ReadData2E = 64'hC58FFDFE00000000; + ReadData3E = 64'h8010800000000FFF; + ans = 64'h45A002FEBFC003FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5543537\n"); + end + ReadData1E = 64'hC070800000007FFF; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5544538\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h802000103FFFFFFF; + ReadData3E = 64'hF28000010000000F; + ans = 64'hF28000010000000F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5545539\n"); + end + ReadData1E = 64'h3FE000003FFF8000; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h37FFFFFFFFFBFF80; + ans = 64'h37FFFFFFFFFBFF80; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5546540\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h3F6C06D4E5885076; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5547541\n"); + end + ReadData1E = 64'h801058761573B25D; + ReadData2E = 64'h1A300001FFFFBFFF; + ReadData3E = 64'hC0EFFFC00FFFFFFF; + ans = 64'hC0EFFFC00FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5548542\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5549543\n"); + end + ReadData1E = 64'hBFF0DD3C68F59440; + ReadData2E = 64'hB81F801FFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5550544\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'hBA10200000000004; + ans = 64'hBA10200000000004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5551545\n"); + end + ReadData1E = 64'hB81000003FFFFFF7; + ReadData2E = 64'hC1DFFFFFFC07FFFF; + ReadData3E = 64'h3FB00400003FFFFE; + ans = 64'h3FB00400003FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5552546\n"); + end + ReadData1E = 64'hC000000007FFFFFF; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'h3CB0000008000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5553547\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'hBA600400003FFFFF; + ReadData3E = 64'h40400000001FFFF0; + ans = 64'h4040000000200FF4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5554548\n"); + end + ReadData1E = 64'h3FE001FFFFFFFFBE; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hC3DFFFFDFFFFBFFF; + ans = 64'hC3DFFFFDFFFFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5555549\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'hC8032EFB56E6BDF3; + ReadData3E = 64'hC010000000000001; + ans = 64'h4B632EFB56E6BDF2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5556550\n"); + end + ReadData1E = 64'hC8000000007FFFBF; + ReadData2E = 64'hC0400001FFFFDFFF; + ReadData3E = 64'h3FDFEFFFFFFEFFFE; + ans = 64'h48500002007FDFCE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5557551\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h4340000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5558552\n"); + end + ReadData1E = 64'hC36941DEE6046FBE; + ReadData2E = 64'h3CCFF7FFFFFFFFF6; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hC0493B8E6E4AEE9A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5559553\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h401B9C9197836882; + ans = 64'h4340000000000003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5560554\n"); + end + ReadData1E = 64'hC02FFFFFFFFF8000; + ReadData2E = 64'hC3F0000004000800; + ReadData3E = 64'h4340000010000000; + ans = 64'h4430002003FFE800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5561555\n"); + end + ReadData1E = 64'h43DFFFFA00000000; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5562556\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'hC522000000001FFF; + ReadData3E = 64'hBFD07FEFFFFFFFFF; + ans = 64'h4882000000001FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5563557\n"); + end + ReadData1E = 64'h3FD000003FFFFFEE; + ReadData2E = 64'hBFFFFFFFFFFFFFFF; + ReadData3E = 64'hC1EFFFFFFEFFFFFF; + ans = 64'hC1EFFFFFFF0FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5564558\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'h3FD00003FFFFEFFE; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hC3300003FFFFEFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5565559\n"); + end + ReadData1E = 64'h3FC0003FFEFFFFFF; + ReadData2E = 64'hD24C364B1677F5AC; + ReadData3E = 64'hC0B7F45E3A690106; + ans = 64'hD21C36BBEDE0EAD9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5566560\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h436FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5567561\n"); + end + ReadData1E = 64'h7FD00001FFEFFFFF; + ReadData2E = 64'hC03FFFFFFFFFFFF9; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5568562\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h45BFFFFFFBFFF000; + ans = 64'h45BFFFFFFC00F000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5569563\n"); + end + ReadData1E = 64'hBE691E4CD816008E; + ReadData2E = 64'h00270CC88980383C; + ReadData3E = 64'hB7F4BB94C7A92D0F; + ans = 64'hB7F4BB94C7A92D0F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5570564\n"); + end + ReadData1E = 64'hC3D000080000007E; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'h440000080000007D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5571565\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'hC03FFFFFFFF7E000; + ReadData3E = 64'h43DFF80000000080; + ans = 64'h43E0FBFFFFFFBF40; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5572566\n"); + end + ReadData1E = 64'hCCE0000001FFFFFB; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'hC03A97A3BBD1D3F1; + ans = 64'h5040000001FFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5573567\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'hC80FFFFFFC0FFFFE; + ReadData3E = 64'h8010000000000001; + ans = 64'h4B6FFFFFFC0FFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5574568\n"); + end + ReadData1E = 64'h3ECFFFF800800000; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h45BF9FAD72BC38DB; + ans = 64'h45BF9FAD72BC38DB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5575569\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5576570\n"); + end + ReadData1E = 64'hBFC6B1EFBB0BB5BF; + ReadData2E = 64'hFFF0006FFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hFFF8006FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5577571\n"); + end + ReadData1E = 64'hC34FFFFFFFFFFFFE; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h7FD0200002000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5578572\n"); + end + ReadData1E = 64'h43EEFFFFFFFFBFFF; + ReadData2E = 64'h049E800000000000; + ReadData3E = 64'hBFDFFC0000020000; + ans = 64'hBFDFFC0000020000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5579573\n"); + end + ReadData1E = 64'hBFEB0DFAE299634E; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5580574\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'hBFD0000207FFFFFF; + ReadData3E = 64'hBCD94CE0F79C456F; + ans = 64'h7FC0000207FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5581575\n"); + end + ReadData1E = 64'hC1D0100001FFFFFF; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'hAB00D4656B102557; + ans = 64'hAB00D4656B102557; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5582576\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'hC57FFFFFFBFFFFBE; + ReadData3E = 64'hFFE0000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5583577\n"); + end + ReadData1E = 64'h3B600000003FFFC0; + ReadData2E = 64'h4020000FFFFFFFFF; + ReadData3E = 64'hC13FFFFBFFEFFFFE; + ans = 64'hC13FFFFBFFEFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5584578\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5585579\n"); + end + ReadData1E = 64'hFFF1FEFFFFFFFFFE; + ReadData2E = 64'h3DCAD42F33CBA631; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hFFF9FEFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5586580\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFDFFFFFFFDFE; + ans = 64'hC00C00400000003E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5587581\n"); + end + ReadData1E = 64'h04AFF800000FFFFF; + ReadData2E = 64'hC00FFFFDFFFFFFEF; + ReadData3E = 64'hC3D657F62E4342B8; + ans = 64'hC3D657F62E4342B8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5588582\n"); + end + ReadData1E = 64'h41FFFE0000080000; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'h3EBFFE000007FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5589583\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h41EFFFFFF7FFFFFE; + ReadData3E = 64'h2A7000207FFFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5590584\n"); + end + ReadData1E = 64'h48069C569F01409E; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'hC1CFFFFFFFFFFFFE; + ans = 64'h47E69C569F01409F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5591585\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'hFFDDD8CF3FF071DF; + ReadData3E = 64'h4000000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5592586\n"); + end + ReadData1E = 64'h459A1EEDF6EC5FB6; + ReadData2E = 64'hC030000003FFFFE0; + ReadData3E = 64'hC05F8207BFDC07A0; + ans = 64'hC5DA1EEDFD741AFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5593587\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hFFD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5594588\n"); + end + ReadData1E = 64'h000FFFFF00003FFE; + ReadData2E = 64'hC4240000FFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h8443FFFFC0003FFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5595589\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hBFD00007FDFFFFFF; + ans = 64'hFFDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5596590\n"); + end + ReadData1E = 64'h37F000008000007E; + ReadData2E = 64'hFFFFFFFFFFC7FFFF; + ReadData3E = 64'h41C01FFFFE000000; + ans = 64'hFFFFFFFFFFC7FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5597591\n"); + end + ReadData1E = 64'hBE2FFFFFFFFCFFFE; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5598592\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h40B00000000008FF; + ReadData3E = 64'h4013AC1788EE2681; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5599593\n"); + end + ReadData1E = 64'hC7E0001000000004; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'hBF8682D8FA5D2268; + ans = 64'hC7F0001000000004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5600594\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'hB5C001FFEFFFFFFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h75B001FFEFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5601595\n"); + end + ReadData1E = 64'h41DFFFFC00000000; + ReadData2E = 64'h800FFFFF00003FFE; + ReadData3E = 64'h426FFFFFFFFFC1FF; + ans = 64'h426FFFFFFFFFC1FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5602596\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5603597\n"); + end + ReadData1E = 64'hBCA00000000FFF00; + ReadData2E = 64'h47EAEEC611A9C5E2; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5604598\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h0012000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5605599\n"); + end + ReadData1E = 64'hC0073D8DBC9C7CBB; + ReadData2E = 64'hCC3FFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFF000000; + ans = 64'h4C573D8DBC9C7CBA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5606600\n"); + end + ReadData1E = 64'h1097FFFF00000000; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5607601\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h45E00007FFF7FFFF; + ReadData3E = 64'h9C80852A49E348A6; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5608602\n"); + end + ReadData1E = 64'h41CFF00000001FFE; + ReadData2E = 64'h434FFFFFFFFFFFFE; + ReadData3E = 64'h3FAB3084E1E3F5CC; + ans = 64'h452FF00000001FFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5609603\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h41E6D2BD893FA49F; + ReadData3E = 64'h0000000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5610604\n"); + end + ReadData1E = 64'hBFDBFFFFFFFFFE00; + ReadData2E = 64'hBFF581B1D667D77E; + ReadData3E = 64'h3F95846D8044FB6B; + ans = 64'h3FE37D9F079D0311; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5611605\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5612606\n"); + end + ReadData1E = 64'h41D00004007FFFFF; + ReadData2E = 64'h406000004001FFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h4240000440801001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5613607\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h43CFFEBFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5614608\n"); + end + ReadData1E = 64'hBFEFCBF7436D2965; + ReadData2E = 64'hEB1FFFFEFFFE0000; + ReadData3E = 64'hBCA0000001000003; + ans = 64'h6B1FCBF6450B728A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5615609\n"); + end + ReadData1E = 64'hCAD0800000000400; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5616610\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h4804ECDDD4DEE74F; + ReadData3E = 64'h9700000101FFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5617611\n"); + end + ReadData1E = 64'hBFCF27C158FB06D7; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h41F649FC8E281CDB; + ans = 64'h41F649FC8E281CDB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5618612\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h47E0400000000100; + ReadData3E = 64'h4340000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5619613\n"); + end + ReadData1E = 64'h3800000021FFFFFF; + ReadData2E = 64'hC5DFFFF7FFFFFFFE; + ReadData3E = 64'hC0040000000003FF; + ans = 64'hC0040000000803FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5620614\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5621615\n"); + end + ReadData1E = 64'hB7EFFFFFFFBFFDFF; + ReadData2E = 64'hC3DFFFEFFFFFDFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5622616\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h3801FFFFFFFEFFFF; + ans = 64'h7C90000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5623617\n"); + end + ReadData1E = 64'h47EFFFDFFFFFEFFF; + ReadData2E = 64'hBCA00200007FFFFF; + ReadData3E = 64'h3C251C6E954F5BB4; + ans = 64'hC4A001EFFE7FF77D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5624618\n"); + end + ReadData1E = 64'hBFFFFEFFFFDFFFFF; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5625619\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h41D0000000001FFF; + ReadData3E = 64'h800007FFFFFFDFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5626620\n"); + end + ReadData1E = 64'hCC8000100003FFFF; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'h3E300007FF7FFFFF; + ans = 64'h4C7000100003FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5627621\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'hB9597C76FFEE87C2; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h79497C76FFEE87C2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5628622\n"); + end + ReadData1E = 64'hBFFC51565FC8FDE7; + ReadData2E = 64'h801FFFFFFFE80000; + ReadData3E = 64'h37EFFFFF7FFFFFF7; + ans = 64'h37EFFFFF7FFFFFF7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5629623\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h7FDFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5630624\n"); + end + ReadData1E = 64'h4B20000000003FBE; + ReadData2E = 64'h3FF000004000FFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h4B20000040013FBD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5631625\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hC7EE000000000100; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5632626\n"); + end + ReadData1E = 64'hFCD0007BFFFFFFFE; + ReadData2E = 64'hFFF0000001FFFFFF; + ReadData3E = 64'h43F01515C72E4DD7; + ans = 64'hFFF8000001FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5633627\n"); + end + ReadData1E = 64'h00200000C0000000; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5634628\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h002C0000003FFFFF; + ReadData3E = 64'hBFF0000FFDFFFFFF; + ans = 64'hC0200001FFDFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5635629\n"); + end + ReadData1E = 64'hFFDFFF9FFFFFFFFE; + ReadData2E = 64'hC000000000000001; + ReadData3E = 64'hD6FF800000001000; + ans = 64'h7FEFFFA000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5636630\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h3FFC5E279452AF09; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hFFEC5E279452AF09; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5637631\n"); + end + ReadData1E = 64'hC02FFFFC00000FFF; + ReadData2E = 64'hBFD0000000021FFF; + ReadData3E = 64'hC800000000000000; + ans = 64'hC800000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5638632\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5639633\n"); + end + ReadData1E = 64'hBE17800000000000; + ReadData2E = 64'h41F0000000007FBF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC350000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5640634\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'hB80000007FFF7FFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5641635\n"); + end + ReadData1E = 64'h29D6A54B3442DB61; + ReadData2E = 64'h4330000200000003; + ReadData3E = 64'h400FDFFFFFFFF7FF; + ans = 64'h400FDFFFFFFFF7FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5642636\n"); + end + ReadData1E = 64'h3FF0000002002000; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hC350000002002000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5643637\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'hFFFFFFF7FFFFFFDF; + ReadData3E = 64'hB78FFFFE00000003; + ans = 64'hFFFFFFF7FFFFFFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5644638\n"); + end + ReadData1E = 64'hBFCE77AA6423B8DB; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h3FC0002080000000; + ans = 64'h7FBE77AA6423B8DD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5645639\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'h47E003BFFFFFFFFF; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5646640\n"); + end + ReadData1E = 64'hBFDFFBFFFF7FFFFF; + ReadData2E = 64'h43C5B1C8BA68D7AB; + ReadData3E = 64'h9440000003FFFDFF; + ans = 64'hC3B5AF1280FAC36C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5647641\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5648642\n"); + end + ReadData1E = 64'hC0700400000001FF; + ReadData2E = 64'hC00C00001FFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h408C17002008037C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5649643\n"); + end + ReadData1E = 64'hFFE0000000000000; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h41C4E1D9705D413F; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5650644\n"); + end + ReadData1E = 64'h84E04001FFFFFFFF; + ReadData2E = 64'hBFCFFFFFFFBEFFFF; + ReadData3E = 64'hBFC04000000FFFFF; + ans = 64'hBFC04000000FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5651645\n"); + end + ReadData1E = 64'hFFD00000003FBFFF; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'hBFF00000003FBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5652646\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h85D16A57EAC915F4; + ReadData3E = 64'hC190000FFFFF0000; + ans = 64'h45C16A57EAC915F5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5653647\n"); + end + ReadData1E = 64'hBC7337917661564D; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h401FDFFFFFFDFFFE; + ans = 64'h401FDFFFFFFDFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5654648\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h80200FFFFFFFFF7E; + ReadData3E = 64'hC010000000000001; + ans = 64'h3F8FFFFFFFFEFC02; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5655649\n"); + end + ReadData1E = 64'hBFDBFFFFFFFBFFFF; + ReadData2E = 64'hC7E4DD912A8938F7; + ReadData3E = 64'h381229CE2D9A98E8; + ans = 64'h47D241DF05357625; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5656650\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hFC90000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5657651\n"); + end + ReadData1E = 64'h41E054774B0C1D32; + ReadData2E = 64'hBD8007EFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBF705C91323A5933; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5658652\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h41CFFFF7FFFFFFFC; + ans = 64'hFCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5659653\n"); + end + ReadData1E = 64'hBCA007FFFFFDFFFE; + ReadData2E = 64'hB5D0001800000000; + ReadData3E = 64'h468FFFF7FFFFDFFE; + ans = 64'h468FFFF7FFFFDFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5660654\n"); + end + ReadData1E = 64'h85800000001FFF7E; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5661655\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h4C7FFFFFFFF87FFF; + ReadData3E = 64'h3FBFDFFFFFFFFFF7; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5662656\n"); + end + ReadData1E = 64'h1C5C008000000000; + ReadData2E = 64'h3FDFFFFFFFFFFFFE; + ReadData3E = 64'hBFFFC775CF3B3415; + ans = 64'hBFFFC775CF3B3415; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5663657\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h002FFFFFDFFFFFFF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hC01DFFFFE0000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5664658\n"); + end + ReadData1E = 64'hBF90000807FFFFFF; + ReadData2E = 64'h44F8112CB753C6A7; + ReadData3E = 64'h37EFFFFFFFFFEFFE; + ans = 64'hC4981138CBF2B8AB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5665659\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hFFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5666660\n"); + end + ReadData1E = 64'hBFEA140D7AEEB598; + ReadData2E = 64'h400FFFFFFFF00007; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5667661\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h7FDFF807FFFFFFFF; + ans = 64'hFFE003FC00000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5668662\n"); + end + ReadData1E = 64'hBFDFFDFE00000000; + ReadData2E = 64'hD02FFFFF80008000; + ReadData3E = 64'h3FBC94644A9E129B; + ans = 64'h501FFDFD800887F8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5669663\n"); + end + ReadData1E = 64'hC233FFFFFDFFFFFF; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'hC000000000000000; + ans = 64'hC243FFFFFE00FFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5670664\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'hC043FC7D65809BB1; + ReadData3E = 64'hF0EFFFFBFFFFFEFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5671665\n"); + end + ReadData1E = 64'hBFE0000001000003; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'h41CFFE000003FFFE; + ans = 64'h41CFFDFFFF03FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5672666\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h3CAFFE00000FFFFF; + ReadData3E = 64'h8010000000000001; + ans = 64'hFC9FFE0000100001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5673667\n"); + end + ReadData1E = 64'hB69316940613EF31; + ReadData2E = 64'h841FFFFFFFFFEBFF; + ReadData3E = 64'hC1D0000000021FFF; + ans = 64'hC1D0000000021FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5674668\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5675669\n"); + end + ReadData1E = 64'h9B4FFFFFFFFFFBFF; + ReadData2E = 64'h000400000000FFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5676670\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h48700003FFFEFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5677671\n"); + end + ReadData1E = 64'hBF866B8DC58B36B3; + ReadData2E = 64'hBFFF5682B0A914EB; + ReadData3E = 64'h3FC8E2AB2B4D139E; + ans = 64'h3FCBA144E9F00AA0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5678672\n"); + end + ReadData1E = 64'hBFF00000003FDFFF; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h3FD0000000000000; + ans = 64'hFFE00000003FDFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5679673\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'hBFD000000007FDFE; + ReadData3E = 64'h400000000000FFFE; + ans = 64'h7FC000000007FDFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5680674\n"); + end + ReadData1E = 64'h7FDFFBFFFFFF0000; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'h531FFFC3FFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5681675\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'hC03B20D52A6DF360; + ReadData3E = 64'hFFE0000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5682676\n"); + end + ReadData1E = 64'hC7F07FFFF7FFFFFF; + ReadData2E = 64'hBFC55AD015BCB7D9; + ReadData3E = 64'hC34000200000000F; + ans = 64'h47C605A68BBD358C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5683677\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5684678\n"); + end + ReadData1E = 64'hBCA0407FFFFFFFFE; + ReadData2E = 64'hBFFFFFFFFF7DFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5685679\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'hBFC8758770761CF9; + ans = 64'hBFC8758770761CF9; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5686680\n"); + end + ReadData1E = 64'hC8000007FFFDFFFF; + ReadData2E = 64'h3ECF22F05DA31DB2; + ReadData3E = 64'h40227C208FA82CBF; + ans = 64'hC6DF22FFEF176824; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5687681\n"); + end + ReadData1E = 64'hBFF000000003FFFF; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'h001000000003FFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5688682\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h4000F2F5230EF1A6; + ReadData3E = 64'h382EFFFFFEFFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5689683\n"); + end + ReadData1E = 64'h41F0000000000FFB; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h8020000040200000; + ans = 64'h8220000000100FFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5690684\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'hC324000000400000; + ReadData3E = 64'h4000000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5691685\n"); + end + ReadData1E = 64'hBFFDFFFFFFFFFC00; + ReadData2E = 64'h4FB7FF7FFFFFFFFF; + ReadData3E = 64'h41C5FD9C45FAC888; + ans = 64'hCFC67F87FFFFFCFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5692686\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h7C90000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5693687\n"); + end + ReadData1E = 64'hBFD99CCA613FFAE7; + ReadData2E = 64'h3F1FFFFF60000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hBF099CC9E1300701; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5694688\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h3FD0400000020000; + ans = 64'h7FC0000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5695689\n"); + end + ReadData1E = 64'h450FFFFFFFFFFBFE; + ReadData2E = 64'hC323FFFFFFFFFF7F; + ReadData3E = 64'h401383F3408E0102; + ans = 64'hC843FFFFFFFFFCFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5696690\n"); + end + ReadData1E = 64'hC417FFF7FFFFFFFF; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'h4407FEF7FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5697691\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h3B9FFFFFFF0FFFFF; + ReadData3E = 64'hBFCFFFFF7FFFFFFE; + ans = 64'hFB8FFFFFFF100001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5698692\n"); + end + ReadData1E = 64'hC3C00000000201FF; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'h3ECFFFFFFFFFFEF8; + ans = 64'h43B0000000020200; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5699693\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'hB7FB54DF78305A6B; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h77EB54DF78305A6D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5700694\n"); + end + ReadData1E = 64'h3DC00000FFFEFFFF; + ReadData2E = 64'h3FE04000000007FF; + ReadData3E = 64'hA650002008000000; + ans = 64'h3DB0400103FF03FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5701695\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h7FE0000000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5702696\n"); + end + ReadData1E = 64'h56B000000EFFFFFE; + ReadData2E = 64'h3FE71A311C5E033B; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5703697\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'h434000000000000B; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5704698\n"); + end + ReadData1E = 64'h7FE841AE1C8B5E0F; + ReadData2E = 64'h37FFDFFFFEFFFFFF; + ReadData3E = 64'h3CABFFFFFFF80000; + ans = 64'h77F8296C6DACC53F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5705699\n"); + end + ReadData1E = 64'hC183AC4B295EA96F; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h41A3AC4B2B5EA96E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5706700\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h407B2A20706CA02F; + ReadData3E = 64'hBCC8EEA3DE85C218; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5707701\n"); + end + ReadData1E = 64'hBFCDB74A4952863B; + ReadData2E = 64'hC010000000000000; + ReadData3E = 64'hBC5FFFFFFEFFFFFA; + ans = 64'h3FEDB74A4952863B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5708702\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'hBE1FFFFF1FFFFFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'h7E0FFFFF20000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5709703\n"); + end + ReadData1E = 64'h39C00000003FFFBF; + ReadData2E = 64'hB86F77A09596943C; + ReadData3E = 64'hBEAFFFFBDFFFFFFF; + ans = 64'hBEAFFFFBDFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5710704\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5711705\n"); + end + ReadData1E = 64'h480001001FFFFFFF; + ReadData2E = 64'h41C000000000017F; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h49D001002000017E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5712706\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h3FBF000000004000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5713707\n"); + end + ReadData1E = 64'hC0307FFFFFFDFFFF; + ReadData2E = 64'h3F9F00000000FFFE; + ReadData3E = 64'hCAAFFFFFFFC003FF; + ans = 64'hCAAFFFFFFFC003FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5714708\n"); + end + ReadData1E = 64'h41EFDFFFFFFBFFFE; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5715709\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h802DBBB7136456B2; + ReadData3E = 64'h40100000001FFFFD; + ans = 64'h4026DDDB89C22B58; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5716710\n"); + end + ReadData1E = 64'h40AD8B6767B86EE2; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h402400001FFFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5717711\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'h43E000000000FFFF; + ReadData3E = 64'h4340000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5718712\n"); + end + ReadData1E = 64'hC3D4000001FFFFFF; + ReadData2E = 64'hBFF00001FFFFFFF7; + ReadData3E = 64'h3A04320360DA6D33; + ans = 64'h43D4000282000034; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5719713\n"); + end + ReadData1E = 64'hFFE0000000000001; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5720714\n"); + end + ReadData1E = 64'h3FEFFFF80003FFFF; + ReadData2E = 64'h7FF8E76615B27E20; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h7FF8E76615B27E20; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5721715\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h43F0B810C3A85A02; + ans = 64'h43F0B810C3A85A02; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5722716\n"); + end + ReadData1E = 64'h801FFF000003FFFF; + ReadData2E = 64'hA42D98A64C52E22F; + ReadData3E = 64'h838000000001EFFE; + ans = 64'h838000000001EFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5723717\n"); + end + ReadData1E = 64'h3AB00001FFFFFBFF; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5724718\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hC6B0003FFFDFFFFF; + ReadData3E = 64'h38E0B304F30C424D; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5725719\n"); + end + ReadData1E = 64'h3FFDA55FC6C4FCF9; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'h401EFFFFFFFFFFE0; + ans = 64'h401EFFFFFFFFFFE0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5726720\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hBD10000007000000; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h7D10000006FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5727721\n"); + end + ReadData1E = 64'hFFEDFFFFFFFF7FFF; + ReadData2E = 64'h7F500000001FFFFF; + ReadData3E = 64'h469CEFA7E05DB8E7; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5728722\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hFCAFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5729723\n"); + end + ReadData1E = 64'hBFC0020000000008; + ReadData2E = 64'h801000000FF7FFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h800DFFBFFE00C01D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5730724\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h4E4037FFFFFFFFFF; + ans = 64'hFFD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5731725\n"); + end + ReadData1E = 64'h41CFFFB7FFFFFFFF; + ReadData2E = 64'hEB180000FFFFFFFE; + ReadData3E = 64'h26EEC5BC3A81915E; + ans = 64'hECF7FFCAFFFDBFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5732726\n"); + end + ReadData1E = 64'h64AFFFFFFFFFFFDB; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h4010000000000000; + ans = 64'h649FFFFFFFFFFFDB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5733727\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hC3FFFFFFFC000400; + ReadData3E = 64'hBFF00013FFFFFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5734728\n"); + end + ReadData1E = 64'hB80FFF7FFFFFFEFF; + ReadData2E = 64'h3FEFFFFFFFFFFFFF; + ReadData3E = 64'h8017FFFFFFFFFEFE; + ans = 64'hB80FFF7FFFFFFEFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5735729\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hC3C0003FFDFFFFFE; + ReadData3E = 64'h3CA0000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5736730\n"); + end + ReadData1E = 64'hC7F590E230A54BC7; + ReadData2E = 64'hBCA0800FFFFFFFFE; + ReadData3E = 64'hBFDFFE000003FFFF; + ans = 64'h44A63D7ED30CA6C8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5737731\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5738732\n"); + end + ReadData1E = 64'h9A5400000000007F; + ReadData2E = 64'hC0100200000001FF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5739733\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h800FFFFFFDFFE000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5740734\n"); + end + ReadData1E = 64'hEB4000000040000F; + ReadData2E = 64'h406EA3E47A0678EA; + ReadData3E = 64'h3B2FF80000010000; + ans = 64'hEBBEA3E47A810899; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5741735\n"); + end + ReadData1E = 64'hC11FFFFFFF7FFEFF; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hC14000003FBFFF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5742736\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hFFE000000001F800; + ReadData3E = 64'hB7FF9D49AD66B826; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5743737\n"); + end + ReadData1E = 64'hB990000000020400; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hFFEFFFE000000800; + ans = 64'hFFEFFFE000000800; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5744738\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hC340000000FFFEFE; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5745739\n"); + end + ReadData1E = 64'h4032000000020000; + ReadData2E = 64'h401C000000002000; + ReadData3E = 64'hC800001FFFFFFFFC; + ans = 64'hC800001FFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5746740\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5747741\n"); + end + ReadData1E = 64'h1C400FFFFFFFEFFE; + ReadData2E = 64'h000FFFFFF7FFFFF7; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5748742\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFE1F; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5749743\n"); + end + ReadData1E = 64'h37F00000000FF7FF; + ReadData2E = 64'hB7700000000001DF; + ReadData3E = 64'hFFEF800200000000; + ans = 64'hFFEF800200000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5750744\n"); + end + ReadData1E = 64'h3FCFF800000003FE; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h0010000000000000; + ans = 64'h7FCFF800000003FC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5751745\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hC80FFFDFFFFFFEFF; + ReadData3E = 64'h37FFFFFFEFFFBFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5752746\n"); + end + ReadData1E = 64'h3FC535B78AFF154E; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'hC3DFFE0000000020; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5753747\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hC0A000007FFFFFDF; + ReadData3E = 64'hC010000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5754748\n"); + end + ReadData1E = 64'hDECFFFFFFFFE7FFF; + ReadData2E = 64'hFFD9819C9825572A; + ReadData3E = 64'h71BFFFFFFFF77FFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5755749\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5756750\n"); + end + ReadData1E = 64'h3FBFBFFFFFFF7FFF; + ReadData2E = 64'h3FD0020040000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h3F9FC3F87EFF7FAF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5757751\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h37E816921AB9BEB9; + ans = 64'h400FFFFFFFFFFFFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5758752\n"); + end + ReadData1E = 64'h3FD0000000017FFF; + ReadData2E = 64'h41C01FFFFFFFEFFF; + ReadData3E = 64'hC1F000007FFFFFFD; + ans = 64'hC1EEFE00FFFFE8CA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5759753\n"); + end + ReadData1E = 64'hC34F0000000001FF; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5760754\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hBFBFFF000001FFFE; + ReadData3E = 64'hFFE0F00000000000; + ans = 64'hFFD9E03FFFFF8001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5761755\n"); + end + ReadData1E = 64'h802D0421A5086B6E; + ReadData2E = 64'hBCA0000000000000; + ReadData3E = 64'hBDE000000007FFFD; + ans = 64'hBDE000000007FFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5762756\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hC1E000001FFFFDFE; + ReadData3E = 64'h3FE0000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5763757\n"); + end + ReadData1E = 64'hFFD44208DEEA7D5B; + ReadData2E = 64'h7FDFFFFCFFFFFFFF; + ReadData3E = 64'hCAF0000000007FFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5764758\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h7FCFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5765759\n"); + end + ReadData1E = 64'h9F600007FFFFFFFD; + ReadData2E = 64'h800FFFFFFFFFFBF8; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5766760\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h380000800007FFFF; + ans = 64'h7FDFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5767761\n"); + end + ReadData1E = 64'h35A001EFFFFFFFFE; + ReadData2E = 64'h402040000000000F; + ReadData3E = 64'hBF6C869BDEA5EED8; + ans = 64'hBF6C869BDEA5EED8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5768762\n"); + end + ReadData1E = 64'hAD431C88034A6207; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5769763\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hBED3FFFFFFFFF000; + ReadData3E = 64'h4800044000000000; + ans = 64'h7ED3FFFFFFFFEFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5770764\n"); + end + ReadData1E = 64'hBCAFFFFF00000004; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'h0026BA4ABD9122D0; + ans = 64'h3CAFFFFF00000004; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5771765\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'h37E0007FFF7FFFFE; + ReadData3E = 64'h8010000000000001; + ans = 64'hF7E0007FFF7FFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5772766\n"); + end + ReadData1E = 64'hC6DFFFFFE00FFFFF; + ReadData2E = 64'h43D5000000000000; + ReadData3E = 64'h26C00400000003FF; + ans = 64'hCAC4FFFFEB0A7FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5773767\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5774768\n"); + end + ReadData1E = 64'h4DBF7FFFFFFE0000; + ReadData2E = 64'hBFB000000000027E; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hCD7F7FFFFFFE04E8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5775769\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h47E00000FFFFFFBF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5776770\n"); + end + ReadData1E = 64'h41CDFF7FFFFFFFFF; + ReadData2E = 64'h3649AE1D4CCBD6E1; + ReadData3E = 64'hC4F003F800000000; + ans = 64'hC4F003F800000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5777771\n"); + end + ReadData1E = 64'h3F8FFFC01FFFFFFF; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FC8000FF8000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5778772\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'h43CFFFF6FFFFFFFF; + ReadData3E = 64'h47FFBA85ED27C05E; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5779773\n"); + end + ReadData1E = 64'h403B87645ABD821D; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'h40600000000037FE; + ans = 64'hC0570EC8B57A943B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5780774\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hBFCBBE50EC8B491C; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFD220D789BA5B74; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5781775\n"); + end + ReadData1E = 64'h3E2F7FFFFFFDFFFF; + ReadData2E = 64'hBF2109F9C766A47F; + ReadData3E = 64'hC0F4000000000007; + ans = 64'hC0F4000000000007; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5782776\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5783777\n"); + end + ReadData1E = 64'hB7FF7EFFFFFFFFFF; + ReadData2E = 64'hCDD0000800020000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h45DF7F0FBF83EFDF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5784778\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'h41F34F83287E685A; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5785779\n"); + end + ReadData1E = 64'h3A3FFFFFF7FFFFFC; + ReadData2E = 64'hB7F000207FFFFFFF; + ReadData3E = 64'hC1FFFFFE03FFFFFE; + ans = 64'hC1FFFFFE03FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5786780\n"); + end + ReadData1E = 64'h3FAFFBFFFFFFFBFF; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'h8000000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5787781\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFF; + ReadData2E = 64'h3818D7CFF179E6C9; + ReadData3E = 64'h47E000000000FFFD; + ans = 64'hF818D7CFF179E6C8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5788782\n"); + end + ReadData1E = 64'hBFE000001FFFF7FF; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h000000008000001F; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5789783\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'hC8007FBFFFFFFFFE; + ReadData3E = 64'h4000000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5790784\n"); + end + ReadData1E = 64'h40DCB6501646528A; + ReadData2E = 64'hBFE93354997F6FB5; + ReadData3E = 64'h3E5FFFFFFFFBFDFF; + ans = 64'hC0D69C7D095691BB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5791785\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC01FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5792786\n"); + end + ReadData1E = 64'h6E2FEFFFFFE00000; + ReadData2E = 64'hCEA0001000000007; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hFCDFF01FEFDFFFEE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5793787\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h43F7FC0000000000; + ans = 64'h43F7FC0000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5794788\n"); + end + ReadData1E = 64'hA88FFFFFFFFDFFFB; + ReadData2E = 64'h800AB6FB4828B477; + ReadData3E = 64'h381010000FFFFFFF; + ans = 64'h381010000FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5795789\n"); + end + ReadData1E = 64'hB8C000000003FFFB; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5796790\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'hC34BA53EAB8CBB19; + ReadData3E = 64'h40145B23DD1AE8DB; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5797791\n"); + end + ReadData1E = 64'h3F3FFFFFFFEFFFFE; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h5B5FFFFFE0007FFF; + ans = 64'h5B5FFFFFE0007FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5798792\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h40B0000FFFFFFFC0; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5799793\n"); + end + ReadData1E = 64'hBFCFFFFFFFF000FE; + ReadData2E = 64'h43CFF80000000100; + ReadData3E = 64'hBCA0040080000000; + ans = 64'hC3AFF7FFFFF005FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5800794\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hFFDFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5801795\n"); + end + ReadData1E = 64'hC02E0001FFFFFFFF; + ReadData2E = 64'h800FFFDFFFFFFFFC; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5802796\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hC7100000000007DF; + ans = 64'hFFDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5803797\n"); + end + ReadData1E = 64'h43DFFF0000040000; + ReadData2E = 64'hB80FFFFFFFFBFFC0; + ReadData3E = 64'h43400040000FFFFF; + ans = 64'h43400040000FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5804798\n"); + end + ReadData1E = 64'hC34B4CBD751C5070; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h3FF0000000000000; + ans = 64'hC34B4CBD751C506E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5805799\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'hBFFE0003FFFFFFFF; + ReadData3E = 64'h3CA0000800000200; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5806800\n"); + end + ReadData1E = 64'h633FFFFFFFFFF7FC; + ReadData2E = 64'h3FF0000000000001; + ReadData3E = 64'h5BEFFFFC7FFFFFFE; + ans = 64'h633FFFFFFFFFF7FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5807801\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h43EA49F9E3CF97B4; + ReadData3E = 64'h0000000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5808802\n"); + end + ReadData1E = 64'h381FBFFFF7FFFFFF; + ReadData2E = 64'hC34C00000003FFFF; + ReadData3E = 64'hFFF037FFFFFFFFFF; + ans = 64'hFFF837FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5809803\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5810804\n"); + end + ReadData1E = 64'hC0000007FFFFDFFF; + ReadData2E = 64'h4243CD244E9B713B; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC253CD2E352E70ED; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5811805\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'hBC800001FFFFFFE0; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5812806\n"); + end + ReadData1E = 64'hBE3800000000FFFF; + ReadData2E = 64'hC7FFFFFFFFFFFDF0; + ReadData3E = 64'hC2A000000400FFFE; + ans = 64'h464800000000FE73; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5813807\n"); + end + ReadData1E = 64'h3FE0FFFFFC000000; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h4010FFFFFBFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5814808\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'hE920DEAA4302731E; + ReadData3E = 64'hC343FFFDFFFFFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5815809\n"); + end + ReadData1E = 64'h00100000003FFFBF; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h4032B28A885CCAA4; + ans = 64'h4032B28A885CCAA4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5816810\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h3F4FFFFFFFFFFFFF; + ReadData3E = 64'h4340000000000001; + ans = 64'hFF4FFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5817811\n"); + end + ReadData1E = 64'hFFFFFDFFFFFFC000; + ReadData2E = 64'h47E0000000007FFF; + ReadData3E = 64'h434000FFFFFFFF7F; + ans = 64'hFFFFFDFFFFFFC000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5818812\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5819813\n"); + end + ReadData1E = 64'hBFC004000000003E; + ReadData2E = 64'h37FF54882EB41746; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5820814\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hC1EFFF801FFFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5821815\n"); + end + ReadData1E = 64'h43EFF7FFFFFFFFEF; + ReadData2E = 64'h40004AA3EF8463C9; + ReadData3E = 64'h3FC000003FFFFFFF; + ans = 64'h44004691468882A7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5822816\n"); + end + ReadData1E = 64'hC0D17FFFFFFFFFFE; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'hFFF0000000000000; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5823817\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'hBFA2000001000000; + ReadData3E = 64'h8006EE9B9F1E51BE; + ans = 64'h7FA2000000FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5824818\n"); + end + ReadData1E = 64'hC3EFFFFEFFFFFFFF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h1EB000000FFFF000; + ans = 64'h1EB000000FFFF000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5825819\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'hC1D0000007BFFFFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5826820\n"); + end + ReadData1E = 64'h3FDFFFFEFFFFFFFF; + ReadData2E = 64'h405E7D790E3E9FFF; + ReadData3E = 64'h43E4FECA261ACD6B; + ans = 64'h43E4FECA261ACD6B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5827821\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h4017FFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5828822\n"); + end + ReadData1E = 64'hC02003FFFFFBFFFE; + ReadData2E = 64'h44F0000007FF0000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC520040007FCFFBE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5829823\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'hBFB7539ECC38A4BF; + ans = 64'h401FA2B184CF1D6A; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5830824\n"); + end + ReadData1E = 64'h80200000000000EE; + ReadData2E = 64'hFFDB52833CB11F00; + ReadData3E = 64'h802FFFFFFFC00FFF; + ans = 64'h400B52833CB12096; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5831825\n"); + end + ReadData1E = 64'h4010003BFFFFFFFF; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h4010000000000000; + ans = 64'h400FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5832826\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'hC03007FFFF7FFFFF; + ReadData3E = 64'h299000000003FFFC; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5833827\n"); + end + ReadData1E = 64'h04B0000000008080; + ReadData2E = 64'hBCAFFFFFFFFFFFFE; + ReadData3E = 64'hC3D00000007FFBFE; + ans = 64'hC3D00000007FFBFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5834828\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h3FABFFFFFFFFFC00; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hFFABFFFFFFFFFBFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5835829\n"); + end + ReadData1E = 64'h3E9000000000000D; + ReadData2E = 64'h4B2F5D914BFF7B17; + ReadData3E = 64'h3CDE458027A133BD; + ans = 64'h49CF5D914BFF7B30; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5836830\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h7FDFFFFFFFFFFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5837831\n"); + end + ReadData1E = 64'hC3407B19CFF9E57D; + ReadData2E = 64'hB7AFFFFFFFF807FE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC34FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5838832\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'hBFBE0E5CF7E84674; + ans = 64'h7FEFFFFFFFFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5839833\n"); + end + ReadData1E = 64'hC00000000010007F; + ReadData2E = 64'hBFE31B82DC2EC537; + ReadData3E = 64'h00272E65DB13BF3C; + ans = 64'h3FF31B82DC41E152; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5840834\n"); + end + ReadData1E = 64'h3C0FFFFFF000003F; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5841835\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h3801000000800000; + ReadData3E = 64'h3FEEC713A570A87B; + ans = 64'hF8010000007FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5842836\n"); + end + ReadData1E = 64'hC3CFFFFFC01FFFFE; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'hBFF000007FFFFFF8; + ans = 64'h43DFFFFFC01FFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5843837\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'hBFFC08701903E00F; + ReadData3E = 64'h7FF0000000000001; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5844838\n"); + end + ReadData1E = 64'h3CF02000000003FE; + ReadData2E = 64'h4030000000000F00; + ReadData3E = 64'hC0289159A4A40F53; + ans = 64'hC0289159A4A40F33; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5845839\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5846840\n"); + end + ReadData1E = 64'h3FE07F7FFFFFFFFE; + ReadData2E = 64'hC017FEFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hBFF17C700FFFFFF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5847841\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h40B7FFFFFFDFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5848842\n"); + end + ReadData1E = 64'h43C0000000100800; + ReadData2E = 64'hBFD07CFE21AAA39A; + ReadData3E = 64'h3FD0407FFFFFFFFF; + ans = 64'hC3A07CFE21BB28D7; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5849843\n"); + end + ReadData1E = 64'h4029C2259558ABD5; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h0010000000000000; + ans = 64'hC379C2259558ABD5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5850844\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h80180000000000FF; + ReadData3E = 64'h801000103FFFFFFF; + ans = 64'h40180000000000FD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5851845\n"); + end + ReadData1E = 64'hACBEBE64E9751D84; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h255001FEFFFFFFFF; + ans = 64'h301EBE64E9751D83; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5852846\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'h96AFFEFF00000000; + ReadData3E = 64'hC010000000000001; + ans = 64'h56AFFEFEFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5853847\n"); + end + ReadData1E = 64'h937FFFFF3FFFFFFE; + ReadData2E = 64'h242FFFE000020000; + ReadData3E = 64'h43D0800000000008; + ans = 64'h43D0800000000008; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5854848\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5855849\n"); + end + ReadData1E = 64'h401FFFFFFFBEFFFE; + ReadData2E = 64'hBFC00000020FFFFE; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBFF0000001EF7FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5856850\n"); + end + ReadData1E = 64'hFFEFFFFFFFFFFFFE; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hC030000001FFFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5857851\n"); + end + ReadData1E = 64'h434FFFFF00000007; + ReadData2E = 64'hB7F0000000003DFE; + ReadData3E = 64'hBF3FFFFFFFFFFFFF; + ans = 64'hBF3FFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5858852\n"); + end + ReadData1E = 64'hC1C6DA554B2A02DC; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h7FE0000000000000; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5859853\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h434FFFFFFFC07FFE; + ReadData3E = 64'h401FFFC0000000FF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5860854\n"); + end + ReadData1E = 64'hC1FFFFFFF8010000; + ReadData2E = 64'h0000000000000001; + ReadData3E = 64'h401FF800000000FF; + ans = 64'h401FF800000000FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5861855\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h43C1FFFFFFFFFBFF; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5862856\n"); + end + ReadData1E = 64'h801E000FFFFFFFFF; + ReadData2E = 64'h5FA001FFFFFFFFF7; + ReadData3E = 64'hBFFFFEFFFFFFFFFF; + ans = 64'hBFFFFEFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5863857\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5864858\n"); + end + ReadData1E = 64'h41C1FA28AE56CF27; + ReadData2E = 64'h55DC000000000040; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5865859\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h47E000FFFFFDFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5866860\n"); + end + ReadData1E = 64'h41BFFFFFFFE00007; + ReadData2E = 64'h92E000007DFFFFFE; + ReadData3E = 64'h802FBDFFFFFFFFFE; + ans = 64'h94B000007DF00001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5867861\n"); + end + ReadData1E = 64'hB81FFFE000000100; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5868862\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hEE1003FFFFFFFFFA; + ReadData3E = 64'hBFD458B58E16CE41; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5869863\n"); + end + ReadData1E = 64'hBFD000000000041F; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'h3FEFF1880936E6C3; + ans = 64'h3FEDF1880936E63F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5870864\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hC02FB80000000000; + ReadData3E = 64'h8010000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5871865\n"); + end + ReadData1E = 64'h3FF0B263BFD80200; + ReadData2E = 64'hC80FFFC000000007; + ReadData3E = 64'h43EFFFFFFB800000; + ans = 64'hC810B2425B108254; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5872866\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h3FE0000000000001; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5873867\n"); + end + ReadData1E = 64'h41FFFFDFFFF80000; + ReadData2E = 64'h40E0EFEF93AE791F; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h42F0EFDEA3BAA9F5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5874868\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFDFFFFF7; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5875869\n"); + end + ReadData1E = 64'hFFF9792B0DD2F45B; + ReadData2E = 64'hBFD3FE6E6F452D82; + ReadData3E = 64'h3800000007FFFFFC; + ans = 64'hFFF9792B0DD2F45B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5876870\n"); + end + ReadData1E = 64'hBEB000800000003F; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FCFFFEFFF800000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5877871\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h3F1FFFFFFFEFFF7F; + ReadData3E = 64'hAD2FE00000000007; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5878872\n"); + end + ReadData1E = 64'h3FF03FFFFFFFFBFF; + ReadData2E = 64'h4000000000000000; + ReadData3E = 64'h7AC0003FFFFFFEFE; + ans = 64'h7AC0003FFFFFFEFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5879873\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hBFDEFFFFFFEFFFFE; + ReadData3E = 64'hFFE0000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5880874\n"); + end + ReadData1E = 64'h380ACC862DC8D885; + ReadData2E = 64'h3FCFFFFFFFFEFE00; + ReadData3E = 64'hBE27D9FFFD16BF36; + ans = 64'hBE27D9FFFD16BF36; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5881875\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5882876\n"); + end + ReadData1E = 64'h37E003FFFFFFFEFE; + ReadData2E = 64'h403FFFEDFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hBFEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5883877\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'h406000000800003F; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5884878\n"); + end + ReadData1E = 64'hBFC0BFFFFFFFFFFF; + ReadData2E = 64'h7FD0400000020000; + ReadData3E = 64'h4370000007FE0000; + ans = 64'hFFA10300000217FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5885879\n"); + end + ReadData1E = 64'hFFDFFFFFC0007FFE; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h8000000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5886880\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hC1CE000003FFFFFE; + ReadData3E = 64'hBF6000000001003E; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5887881\n"); + end + ReadData1E = 64'hC4A000001FFEFFFF; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'hB80FC03FFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5888882\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h43CE0000000FFFFF; + ReadData3E = 64'h4000000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5889883\n"); + end + ReadData1E = 64'h7FE2FF0EE3E066C6; + ReadData2E = 64'h1D30000000202000; + ReadData3E = 64'hBE6BFF8000000000; + ans = 64'h5D22FF0EE4068AE2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5890884\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5891885\n"); + end + ReadData1E = 64'hBFF94967D22AD370; + ReadData2E = 64'h8000007FEFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h0020006518FA94C0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5892886\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h7FED077582DBB81A; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5893887\n"); + end + ReadData1E = 64'hC3FD714355AAC8E9; + ReadData2E = 64'h403FFFFFC0000000; + ReadData3E = 64'hFFFC001000000000; + ans = 64'hFFFC001000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5894888\n"); + end + ReadData1E = 64'h43CFFFF800007FFF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'hC340000000000000; + ans = 64'hC340000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5895889\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hBB6FFFFFFEEFFFFF; + ReadData3E = 64'h6A6FFFFFFE001000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5896890\n"); + end + ReadData1E = 64'h46A01FFFFFFFFC00; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'h568FFFFBFFDFFFFE; + ans = 64'h568FFFFBFFDFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5897891\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h801BFFFFFFFFFFE0; + ReadData3E = 64'hBFD0000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5898892\n"); + end + ReadData1E = 64'h0010077FFFFFFFFE; + ReadData2E = 64'hC03000000003FDFF; + ReadData3E = 64'hBFEA0808B38DE2A0; + ans = 64'hBFEA0808B38DE2A0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5899893\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5900894\n"); + end + ReadData1E = 64'hC80000001FFF8000; + ReadData2E = 64'h41FFFFC000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5901895\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'h380FFFFFFFCFFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5902896\n"); + end + ReadData1E = 64'hB7E0000000800001; + ReadData2E = 64'h43FFFFFFFFFFFFFF; + ReadData3E = 64'hBF4FFEF7FFFFFFFF; + ans = 64'hBF4FFEF800000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5903897\n"); + end + ReadData1E = 64'hF4503FFDFFFFFFFE; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h74303FFDFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5904898\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hC0000003FF000000; + ReadData3E = 64'hC3CFBFFFFFFFFFBE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5905899\n"); + end + ReadData1E = 64'h3EF00000007EFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFF; + ReadData3E = 64'hC7FEE4DD17F4AE40; + ans = 64'hC7FEE4DD17F4AE40; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5906900\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h405FFFF7FFFFFEFF; + ReadData3E = 64'h0000000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5907901\n"); + end + ReadData1E = 64'hBFB00FFFF7FFFFFF; + ReadData2E = 64'hCFA5F1B090D8D162; + ReadData3E = 64'h3FFFFFFFFFFFFBFE; + ans = 64'h4F6607A23670D1EA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5908902\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5909903\n"); + end + ReadData1E = 64'hFFDFFFFF00000040; + ReadData2E = 64'h48F00001BFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5910904\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'hC02FFFFFFFEFFFDF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5911905\n"); + end + ReadData1E = 64'hC37FFFFFFFFFFBF0; + ReadData2E = 64'h7FD1800000000000; + ReadData3E = 64'hBFA7E7CAD560A3D0; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5912906\n"); + end + ReadData1E = 64'h43CFFFDFFFFFFF7E; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hC3DFFFDFFFFFFF7C; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5913907\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h43CD2EEF6D4C9414; + ReadData3E = 64'hC7FFFFFFFFFF001E; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5914908\n"); + end + ReadData1E = 64'h40987EE3D17430E2; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h3E74BE96DD8E9B90; + ans = 64'hC0B87EE3D172E4F8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5915909\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hBFAFFFFFFFFDFFF7; + ReadData3E = 64'h4340000000000001; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5916910\n"); + end + ReadData1E = 64'hB240000000808000; + ReadData2E = 64'h3FF1FFFFFFFFFFDE; + ReadData3E = 64'hC03FC007FFFFFFFE; + ans = 64'hC03FC007FFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5917911\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5918912\n"); + end + ReadData1E = 64'hB813836CA23CCE80; + ReadData2E = 64'hC01E69D9D7EF70EC; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5919913\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'hBFBFFE00000000FF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5920914\n"); + end + ReadData1E = 64'h169001BFFFFFFFFF; + ReadData2E = 64'h480CC0E036D45494; + ReadData3E = 64'hB800000000000807; + ans = 64'hB800000000000807; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5921915\n"); + end + ReadData1E = 64'h801BC28F79C97443; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5922916\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h400FFBFFFFFFFFFF; + ReadData3E = 64'h442FFBFFBFFFFFFF; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5923917\n"); + end + ReadData1E = 64'hB7F8002000000000; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'hC15FFC0000000FFF; + ans = 64'h77E8002000000002; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5924918\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'h3FD3FFFEFFFFFFFE; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5925919\n"); + end + ReadData1E = 64'hC3E003FFFF7FFFFF; + ReadData2E = 64'h3CA0000081000000; + ReadData3E = 64'h43F0000000200003; + ans = 64'h43F0000000200003; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5926920\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5927921\n"); + end + ReadData1E = 64'h42BBFFFFE0000000; + ReadData2E = 64'hC3F1FFFFFFFF8000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC6BF7FFFDBFF2000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5928922\n"); + end + ReadData1E = 64'hFFF0000000000000; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'h19E000000000201F; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5929923\n"); + end + ReadData1E = 64'h9B6FFFC00FFFFFFF; + ReadData2E = 64'h400AA356622DB1D6; + ReadData3E = 64'hC3FFFFE000007FFF; + ans = 64'hC3FFFFE000007FFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5930924\n"); + end + ReadData1E = 64'hC7F90C6D21DA9200; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h4010000000000000; + ans = 64'h4010000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5931925\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h0020040000040000; + ReadData3E = 64'hC030000000FFF800; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5932926\n"); + end + ReadData1E = 64'h39BFF000000000FE; + ReadData2E = 64'h0010000000000000; + ReadData3E = 64'h40EC000003FFFFFF; + ans = 64'h40EC000003FFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5933927\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hD8EFFFF80000000E; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5934928\n"); + end + ReadData1E = 64'hF7FFFFFFFFFFFFE8; + ReadData2E = 64'hC3CFFFFFFFFFF002; + ReadData3E = 64'h42800008000000FF; + ans = 64'h7BDFFFFFFFFFEFEA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5935929\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5936930\n"); + end + ReadData1E = 64'h4000003FFDFFFFFE; + ReadData2E = 64'hBFFFFC00000007FE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hC350000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5937931\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'hEE3FFFFFFF80007E; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5938932\n"); + end + ReadData1E = 64'h4007A9F625848F58; + ReadData2E = 64'h3FB00800000000FE; + ReadData3E = 64'h47E000003DFFFFFF; + ans = 64'h47E000003DFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5939933\n"); + end + ReadData1E = 64'hC01FFFFC01000000; + ReadData2E = 64'h3FD0000000000001; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hC003FFFE00800001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5940934\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h381FFEFFBFFFFFFE; + ReadData3E = 64'h41FA78E5775850A8; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5941935\n"); + end + ReadData1E = 64'h3FEFFFE003FFFFFE; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hBCAFFF000000003E; + ans = 64'h3FDFFFE003FFFFFA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5942936\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h3F922460A982AFE2; + ReadData3E = 64'h7FF0000000000001; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5943937\n"); + end + ReadData1E = 64'h0004195DD69CF7AF; + ReadData2E = 64'h3F1FFFFFEFFFF000; + ReadData3E = 64'h801000000000041F; + ans = 64'h800FFFDF35115F9D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5944938\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5945939\n"); + end + ReadData1E = 64'hC3E000000020007F; + ReadData2E = 64'h41D0008000000100; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hC5C000800020027F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5946940\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'hBFB63F58590273F7; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5947941\n"); + end + ReadData1E = 64'hC010000000020400; + ReadData2E = 64'hC0179FC8B226BB0F; + ReadData3E = 64'hC16A752A4D7DA786; + ans = 64'hC16A752759849141; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5948942\n"); + end + ReadData1E = 64'h41DFFFFFFFFBFFC0; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h0010000000000000; + ans = 64'h41EFFFFFFFFBFFC2; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5949943\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hB89CD81F0ECB1FAA; + ReadData3E = 64'hC34CC4F64350B399; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5950944\n"); + end + ReadData1E = 64'hC008B8377FE0F23C; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hC1F000000007F7FE; + ans = 64'hC1F0000000CDB9BA; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5951945\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hC07FFEFFFFFFFFF6; + ReadData3E = 64'hC010000000000001; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5952946\n"); + end + ReadData1E = 64'hBFD000000FF80000; + ReadData2E = 64'hBEDFFFFFFF800040; + ReadData3E = 64'hBDE0400000000008; + ans = 64'h3EBFFF7E1F700040; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5953947\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h401FFFFFFFFFFFFE; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5954948\n"); + end + ReadData1E = 64'h5D8100FFFFFFFFFE; + ReadData2E = 64'h41C03FFFFFFFDFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'h5F514503FFFFDDFB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5955949\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h3A7F000001FFFFFE; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5956950\n"); + end + ReadData1E = 64'h7D60B32C2772B962; + ReadData2E = 64'hC037FFFEFFFFFFFF; + ReadData3E = 64'h434621B4C5B593A9; + ans = 64'hFDA90CC12FF9539B; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5957951\n"); + end + ReadData1E = 64'h403000003FFFFF00; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5958952\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hC3D0006FFFFFFFFF; + ReadData3E = 64'hCC0597D33E47B493; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5959953\n"); + end + ReadData1E = 64'h381B35A434AE9D9F; + ReadData2E = 64'h7FEFFFFFFFFFFFFF; + ReadData3E = 64'hC3FFFE00003FFFFF; + ans = 64'h781B35A434AE9D9E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5960954\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h47F8000000000FFE; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5961955\n"); + end + ReadData1E = 64'h002FFFFFFFFEFDFF; + ReadData2E = 64'h8018E2E23CBF11D7; + ReadData3E = 64'h3FFFF8000000FFFE; + ans = 64'h3FFFF8000000FFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5962956\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5963957\n"); + end + ReadData1E = 64'h3FAEF6154E342895; + ReadData2E = 64'hC1E00008001FFFFE; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5964958\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'h81800000101FFFFE; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5965959\n"); + end + ReadData1E = 64'hCFAFFFFFFFBDFFFF; + ReadData2E = 64'h0011AE55E5D694F6; + ReadData3E = 64'hBCA6FFC99C41BA2E; + ans = 64'hBCA6FFC99C41BA2E; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5966960\n"); + end + ReadData1E = 64'hC651010000000000; + ReadData2E = 64'h800FFFFFFFFFFFFE; + ReadData3E = 64'hC000000000000000; + ans = 64'hC000000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5967961\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hABCFFFFFFFFFEDFF; + ReadData3E = 64'h2ECCCFA6044325F6; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5968962\n"); + end + ReadData1E = 64'h405FFFFC0000003E; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'hC77FFFFFD7FFFFFE; + ans = 64'hC77FFFFFD7FFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5969963\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h449FFFFFDFFF7FFE; + ReadData3E = 64'h8010000000000001; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5970964\n"); + end + ReadData1E = 64'h7FEFFC0001000000; + ReadData2E = 64'hBFBFC00007FFFFFF; + ReadData3E = 64'h3FD000400003FFFF; + ans = 64'hFFBFBC0808FCFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5971965\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hBCAFFFFFFFFFFFFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5972966\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFDFFE; + ReadData2E = 64'h4C1B8A4316D773F0; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hCC2B8A4316D75864; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5973967\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'hBE20000000003E00; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5974968\n"); + end + ReadData1E = 64'hFFD0000000007EFF; + ReadData2E = 64'hBDE007FFFFFFFBFF; + ReadData3E = 64'h3FD0000000000780; + ans = 64'h7DC0080000007B3D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5975969\n"); + end + ReadData1E = 64'hC3CFFF000FFFFFFF; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h43BFFF000FFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5976970\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hC30FFFFFFEFFFFFF; + ReadData3E = 64'hCB10000001FFC000; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5977971\n"); + end + ReadData1E = 64'h3FFFFFDFFFFDFFFE; + ReadData2E = 64'hBFE0000000000001; + ReadData3E = 64'hBF9FDFFFFFFFEFFE; + ans = 64'hBFF07F6FFFFEFFC0; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5978972\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h0D800000007FFFFF; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5979973\n"); + end + ReadData1E = 64'hBFCDFFFFFFFFFFFB; + ReadData2E = 64'h41D03FFFFFBFFFFE; + ReadData3E = 64'hC01AF4038B5537CE; + ans = 64'hC1AE78000D0201BD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5980974\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hBFF0000000000001; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5981975\n"); + end + ReadData1E = 64'h7FF99F12856CA2AF; + ReadData2E = 64'h406FFEFFFF000000; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'h7FF99F12856CA2AF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5982976\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'hC05FFFFFFFFFFFFF; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5983977\n"); + end + ReadData1E = 64'hBF40000000400100; + ReadData2E = 64'h42EFFFFFFFFF81FE; + ReadData3E = 64'h38000001FEFFFFFF; + ans = 64'hC2400000003FC1FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5984978\n"); + end + ReadData1E = 64'hAB30003FFFFFBFFF; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'h8000000000000000; + ans = 64'h2B50003FFFFFBFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5985979\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'h3FCAC7642CFF9D74; + ReadData3E = 64'h43C080000000007E; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5986980\n"); + end + ReadData1E = 64'hBDAFFFFFFFC00007; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h42E0000003FFFF7F; + ans = 64'h42E0000003FFFF7F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5987981\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hBFBF00000007FFFF; + ReadData3E = 64'h4000000000000001; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5988982\n"); + end + ReadData1E = 64'h43C1E00000000000; + ReadData2E = 64'hC44B4E9D742F4EC1; + ReadData3E = 64'hC3CFFBFE00000000; + ans = 64'hC81E81D3E7CCD9FC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5989983\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5990984\n"); + end + ReadData1E = 64'h401EFFFFFFFFFBFF; + ReadData2E = 64'h80084DD3514FE1B3; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'h80202D92DB15866F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5991985\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'h409000003FFFFFF7; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5992986\n"); + end + ReadData1E = 64'hC000001FFFFF7FFF; + ReadData2E = 64'hBF392791F7124142; + ReadData3E = 64'h802FFFFE000007FF; + ans = 64'h3F4927C446356628; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5993987\n"); + end + ReadData1E = 64'hBFB7687E4ED4BEDC; + ReadData2E = 64'hFFE0000000000001; + ReadData3E = 64'hC340000000000000; + ans = 64'h7FA7687E4ED4BEDD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5994988\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hC3DFFFFE00000008; + ReadData3E = 64'h41F0400010000000; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5995989\n"); + end + ReadData1E = 64'h8564D3A1FAD6C41D; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hC4B00000003FEFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5996990\n"); + end + ReadData1E = 64'hFFF0000000000001; + ReadData2E = 64'hB6028B89D9A32AC3; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hFFF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5997991\n"); + end + ReadData1E = 64'h3CA0040000000200; + ReadData2E = 64'hC2FFFFFFF0010000; + ReadData3E = 64'hB828A9CFAD39DC43; + ans = 64'hBFB003FFF7FE8220; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5998992\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h0000000000000000; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"5999993\n"); + end + ReadData1E = 64'h61EBFFFFFFFFFDFF; + ReadData2E = 64'hC05000000000107F; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6000994\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h000FFFFFFFFFFFFF; + ReadData3E = 64'h43F7FFFFFFFFC000; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6001995\n"); + end + ReadData1E = 64'h41D07C7CE3A55289; + ReadData2E = 64'h43D7FFFFFFFFFFF7; + ReadData3E = 64'h92E000040003FFFF; + ans = 64'h45B8BABB5577FBC4; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6002996\n"); + end + ReadData1E = 64'hBFE008003FFFFFFF; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h3FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6003997\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h43F6487CACFF00C3; + ReadData3E = 64'hB7F99729E8E9489D; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6004998\n"); + end + ReadData1E = 64'h302F800002000000; + ReadData2E = 64'h001FFFFFFFFFFFFE; + ReadData3E = 64'hBFCFEF7FFFFFFFFF; + ans = 64'hBFCFEF7FFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6005999\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hBFD00000000037FF; + ReadData3E = 64'h0000000000000001; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6007000\n"); + end + ReadData1E = 64'h3500FFFDFFFFFFFF; + ReadData2E = 64'h37E0000000001200; + ReadData3E = 64'h4D5FFFFFF7FF8000; + ans = 64'h4D5FFFFFF7FF8000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6008001\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h3CAFFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6009002\n"); + end + ReadData1E = 64'hC7FFFF8000040000; + ReadData2E = 64'hB23003F7FFFFFFFF; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hC00FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6010003\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h3F30000FFFFEFFFF; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6011004\n"); + end + ReadData1E = 64'hC02F800000400000; + ReadData2E = 64'h3FB01FFFFFDFFFFF; + ReadData3E = 64'hFFEFFFD7FFFFFFFF; + ans = 64'hFFEFFFD7FFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6012005\n"); + end + ReadData1E = 64'h480FFFF010000000; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'hBCA0000000000000; + ans = 64'h47FFFFF010000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6013006\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hC1DBFFFFFFFFFFBE; + ReadData3E = 64'h37FC8A5BB9577747; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6014007\n"); + end + ReadData1E = 64'h402FFF7FFFFF7FFE; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'hBFEF7FFFFEFFFFFF; + ans = 64'h402E0780000F7FFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6015008\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hB68FFFFFFFEF7FFE; + ReadData3E = 64'h4340000000000001; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6016009\n"); + end + ReadData1E = 64'hBBF00000000203FE; + ReadData2E = 64'hBD158339EA008594; + ReadData3E = 64'h3F90000000001BFE; + ans = 64'h3F90000000001BFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6017010\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6018011\n"); + end + ReadData1E = 64'hB81424E42A9FF908; + ReadData2E = 64'h3D3679599D56918F; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h3FDFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6019012\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'h43CF7FFFFFFFFBFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6020013\n"); + end + ReadData1E = 64'h0D3FBCDDE52C0A03; + ReadData2E = 64'hC7E0000000000107; + ReadData3E = 64'hC07FEFFFFFFFFDFE; + ans = 64'hC07FEFFFFFFFFDFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6021014\n"); + end + ReadData1E = 64'h380C28D3F07A98B9; + ReadData2E = 64'h400FFFFFFFFFFFFE; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6022015\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h47FFBFFFFFF7FFFF; + ReadData3E = 64'hDEFFFFFF00000010; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6023016\n"); + end + ReadData1E = 64'hC0703FFFFFFFFF7E; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hC03DFFFFFBFFFFFE; + ans = 64'hC0A07BFFFFF7FF7D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6024017\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hBFDFFFBFFFFFF7FF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6025018\n"); + end + ReadData1E = 64'h7FEFFF8000004000; + ReadData2E = 64'h43CE000001000000; + ReadData3E = 64'h380FFFFBDFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6026019\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h434FFFFFFFFFFFFF; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6027020\n"); + end + ReadData1E = 64'hFFF200FFFFFFFFFF; + ReadData2E = 64'h3F900003FFFDFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hFFFA00FFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6028021\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h7FE0000000000000; + ReadData3E = 64'h380000FFFFFFFBFF; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6029022\n"); + end + ReadData1E = 64'h47E0801FFFFFFFFF; + ReadData2E = 64'h7FEBFFFFFFFBFFFE; + ReadData3E = 64'h480FFFFF800FFFFF; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6030023\n"); + end + ReadData1E = 64'h3CA320147CF5A2BD; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'h4010000000000000; + ans = 64'h7CA320147CF5A2BC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6031024\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hBFD000003EFFFFFF; + ReadData3E = 64'hC018DC7E8E70E059; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6032025\n"); + end + ReadData1E = 64'h3B5FFFDFFFFFFBFE; + ReadData2E = 64'h7FF0000000000001; + ReadData3E = 64'h4000FFFFDFFFFFFE; + ans = 64'h7FF8000000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6033026\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hC1C007FFFFFFF7FE; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6034027\n"); + end + ReadData1E = 64'hC58FFFF020000000; + ReadData2E = 64'hAE0FFFFFF83FFFFF; + ReadData3E = 64'hC010E075BFBF82E1; + ans = 64'hC010E075BFBF82E1; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6035028\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h8000000000000001; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6036029\n"); + end + ReadData1E = 64'h3EF0002003FFFFFF; + ReadData2E = 64'h7FE0000FFFFFDFFF; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'h7EE00030041FE3FE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6037030\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'hC01F008000000000; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6038031\n"); + end + ReadData1E = 64'h4014000007FFFFFF; + ReadData2E = 64'hAF47CCC5A0811B00; + ReadData3E = 64'h41DFC00000000001; + ans = 64'h41DFC00000000001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6039032\n"); + end + ReadData1E = 64'hBF37283463E27E57; + ReadData2E = 64'h801FFFFFFFFFFFFF; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hBFE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6040033\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hFFE405CC507F3599; + ReadData3E = 64'hA0C1203BB0E748FC; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6041034\n"); + end + ReadData1E = 64'h405FFFBFFF000000; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'hC0348C85AA657C6F; + ans = 64'hC0348C85AA657C73; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6042035\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hBFB0000000002007; + ReadData3E = 64'h7FF0000000000001; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6043036\n"); + end + ReadData1E = 64'h7FE07FFFFFFF7FFF; + ReadData2E = 64'hB7EFFFF80000FFFF; + ReadData3E = 64'hBFEFEFF7FFFFFFFF; + ans = 64'hF7E07FFBE00003FF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6044037\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6045038\n"); + end + ReadData1E = 64'hB7E0E581B14F3F56; + ReadData2E = 64'h4010000080000007; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'h3FFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6046039\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'h295000020000003F; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6047040\n"); + end + ReadData1E = 64'h47E00000000FFEFF; + ReadData2E = 64'hC0177FFFFFFFFFFE; + ReadData3E = 64'hC0100003FFFFFF80; + ans = 64'hC807800000177E85; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6048041\n"); + end + ReadData1E = 64'hBA507FFF80000000; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h0010000000000000; + ans = 64'h3A507FFF7FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6049042\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h71A07FBFFFFFFFFF; + ReadData3E = 64'h403000020001FFFF; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6050043\n"); + end + ReadData1E = 64'h93AFFFFFFFEFFEFF; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hC05000001FFDFFFF; + ans = 64'hC05000001FFDFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6051044\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h56BA9C4FE2ACFBEF; + ReadData3E = 64'hC010000000000001; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6052045\n"); + end + ReadData1E = 64'hC3CFFFFFFEFFFFFF; + ReadData2E = 64'h41D00000001FFFF7; + ReadData3E = 64'hBFB187849AEC701D; + ans = 64'hC5AFFFFFFF3FFFED; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6053046\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hC000000000000000; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6054047\n"); + end + ReadData1E = 64'h3CFFFFFFFFFFFF5F; + ReadData2E = 64'hC15BDF02C5A7EBCB; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hBE6BDF02C7A7EB3F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6055048\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hC00FFFFFFFFFFFFF; + ReadData3E = 64'hBFE63A622A33A135; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6056049\n"); + end + ReadData1E = 64'h403000040000003E; + ReadData2E = 64'hBFD0800000000004; + ReadData3E = 64'h3FC0000FDFFFFFFF; + ans = 64'hC0100003A1000044; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6057050\n"); + end + ReadData1E = 64'h480FFFFFFFFFF800; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h7FE0000000000000; + ans = 64'h7FE0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6058051\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'h9335E6D77F5BF7A9; + ReadData3E = 64'h35BFFFEFF8000000; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6059052\n"); + end + ReadData1E = 64'h404FFFFFFFFBFEFF; + ReadData2E = 64'hC01FFFFFFFFFFFFE; + ReadData3E = 64'hFFDFAB051EEE3BC8; + ans = 64'hFFDFAB051EEE3BC8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6060053\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hC7E000201FFFFFFE; + ReadData3E = 64'h3FE0000000000001; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6061054\n"); + end + ReadData1E = 64'hC34F8000001FFFFF; + ReadData2E = 64'h46BA6003C666AF98; + ReadData3E = 64'hC1DFFFFFDFFFFFFF; + ans = 64'hCA19F683B76774DD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6062055\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hC34FFFFFFFFFFFFE; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6063056\n"); + end + ReadData1E = 64'h5ACFFEFFFFFFF7FF; + ReadData2E = 64'h5867F12AEEAA7A87; + ReadData3E = 64'hFFFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6064057\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'h800FE00007FFFFFF; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6065058\n"); + end + ReadData1E = 64'hC03FFFFFFFD00000; + ReadData2E = 64'hC1D0000002000000; + ReadData3E = 64'hBFEFFFFFEFFFFFFF; + ans = 64'h4220000001E60000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6066059\n"); + end + ReadData1E = 64'h3C000020000003FE; + ReadData2E = 64'hFFF0000000000000; + ReadData3E = 64'hC000000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6067060\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFF; + ReadData2E = 64'hC0A007F7FFFFFFFE; + ReadData3E = 64'h002FBFFFFE000000; + ans = 64'hFFFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6068061\n"); + end + ReadData1E = 64'h41FF80FFFFFFFFFE; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'hB7FF00000000001F; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6069062\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hC7F0000040007FFE; + ReadData3E = 64'h8010000000000001; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6070063\n"); + end + ReadData1E = 64'hC3C0000004000000; + ReadData2E = 64'h3FEFFFFFFE0007FE; + ReadData3E = 64'hC1F3FF7FFFFFFFFE; + ans = 64'hC3C00000039FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6071064\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h000FFFFFFFFFFFFE; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6072065\n"); + end + ReadData1E = 64'hC150010000000100; + ReadData2E = 64'h002FFFBFFFFFFFDF; + ReadData3E = 64'h401FFFFFFFFFFFFE; + ans = 64'h401FFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6073066\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h0010000000000001; + ReadData3E = 64'h42A0EFFFFFFFFFFF; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6074067\n"); + end + ReadData1E = 64'hC3CCACEDE1E71A9D; + ReadData2E = 64'h2F5000FFF7FFFFFF; + ReadData3E = 64'hC3DFFFFFFFFFFFFF; + ans = 64'hC3DFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6075068\n"); + end + ReadData1E = 64'h3F913D0850588A88; + ReadData2E = 64'h3CA0000000000000; + ReadData3E = 64'h3FD0000000000000; + ans = 64'h3FD0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6076069\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hC7E4000FFFFFFFFF; + ReadData3E = 64'h381FFFFDEFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6077070\n"); + end + ReadData1E = 64'hC02FFFFFFDFFFFFC; + ReadData2E = 64'h3CAFFFFFFFFFFFFF; + ReadData3E = 64'h7FEE001FFFFFFFFE; + ans = 64'h7FEE001FFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6078071\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hC1FFFFFFF000000E; + ReadData3E = 64'hFFE0000000000001; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6079072\n"); + end + ReadData1E = 64'hC00FBF7FFFFFFFFF; + ReadData2E = 64'h474F8000000003FE; + ReadData3E = 64'hC05F7FFFFC000000; + ans = 64'hC76F4082000003F5; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6080073\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h3FDFFFFFFFFFFFFF; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6081074\n"); + end + ReadData1E = 64'hD6F38332238FC83C; + ReadData2E = 64'h402FFFFF7FFFFFFF; + ReadData3E = 64'hBFEFFFFFFFFFFFFE; + ans = 64'hD7338331D582FFAD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6082075\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h3FE0000000000000; + ReadData3E = 64'h403FFDFFFFFFFBFF; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6083076\n"); + end + ReadData1E = 64'hC3EFFFFFFDFEFFFE; + ReadData2E = 64'h3F9FFFFFFFFFFFFE; + ReadData3E = 64'h402FFFFC7FFFFFFF; + ans = 64'hC39FFFFFFDFEFFFC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6084077\n"); + end + ReadData1E = 64'h465000001FFFFF7E; + ReadData2E = 64'h3FEFFFFFFFFFFFFE; + ReadData3E = 64'h8000000000000000; + ans = 64'h465000001FFFFF7D; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6085078\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hC7F78B0660C0933F; + ReadData3E = 64'h7FEFFFFFF8000003; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6086079\n"); + end + ReadData1E = 64'hBF9129B7DEF9F931; + ReadData2E = 64'h3FFFFFFFFFFFFFFF; + ReadData3E = 64'h000FFFEFFFFFFFBF; + ans = 64'hBFA129B7DEF9F930; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6087080\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h7FF90CCD4ED060F2; + ReadData3E = 64'h4000000000000001; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6088081\n"); + end + ReadData1E = 64'h3FFFF7FFFDFFFFFF; + ReadData2E = 64'h3FBFFFFFFF03FFFF; + ReadData3E = 64'h7FDFFFFFFFBFFFF8; + ans = 64'h7FDFFFFFFFBFFFF8; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6089082\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h4000000000000001; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6090083\n"); + end + ReadData1E = 64'h3FED482BB72F1EF3; + ReadData2E = 64'hBEEFFFFFFFFDFBFF; + ReadData3E = 64'h001FFFFFFFFFFFFE; + ans = 64'hBEED482BB72D46C6; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6091084\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h4010000000000000; + ReadData3E = 64'hC17FFFFFFFFFF840; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6092085\n"); + end + ReadData1E = 64'hC1CB0307FC2A3F83; + ReadData2E = 64'h3FA5BBBEEA6739BB; + ReadData3E = 64'hBFBFFFFFEFFFFF00; + ans = 64'hC18258781D0206AC; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6093086\n"); + end + ReadData1E = 64'h4340000107FFFFFF; + ReadData2E = 64'h401FFFFFFFFFFFFF; + ReadData3E = 64'hC340000000000000; + ans = 64'h436C00020FFFFFFD; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6094087\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hB91FFFFFFFFE01FF; + ReadData3E = 64'hBFCFFFFFFF7FFF80; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6095088\n"); + end + ReadData1E = 64'h480FFFFFFF81FFFF; + ReadData2E = 64'h4340000000000001; + ReadData3E = 64'h3FFFFFFC00003FFF; + ans = 64'h4B5FFFFFFF820001; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6096089\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hBCAFFF8007FFFFFF; + ReadData3E = 64'hBFD0000000000001; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6097090\n"); + end + ReadData1E = 64'h402FBFFFF0000000; + ReadData2E = 64'hC80FFFFFF7FF7FFF; + ReadData3E = 64'h4340040000000400; + ans = 64'hC84FBFFFE80F8103; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6098091\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h7FE0000000000001; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6099092\n"); + end + ReadData1E = 64'hBCAAF3F8572F1876; + ReadData2E = 64'h4010000003FFFBFE; + ReadData3E = 64'h7FEFFFFFFFFFFFFE; + ans = 64'h7FEFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6100093\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h7FEFFFFFFFFFFFFE; + ReadData3E = 64'hBFFFFFFFFEFFFFFF; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6101094\n"); + end + ReadData1E = 64'h43D7455B1E96BCAE; + ReadData2E = 64'hC1C00003DFFFFFFF; + ReadData3E = 64'hBFC7FFFFFFFFFDFF; + ans = 64'hC5A74560C162CE15; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6102095\n"); + end + ReadData1E = 64'h41E000021FFFFFFF; + ReadData2E = 64'h7FFFFFFFFFFFFFFF; + ReadData3E = 64'h3FF0000000000000; + ans = 64'h7FFFFFFFFFFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6103096\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h47E000000000021E; + ReadData3E = 64'h3981003FFFFFFFFF; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6104097\n"); + end + ReadData1E = 64'hB7F3FFDFFFFFFFFF; + ReadData2E = 64'h8000000000000000; + ReadData3E = 64'h7F60078000000000; + ans = 64'h7F60078000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6105098\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h80200007FFFFDFFF; + ReadData3E = 64'h0000000000000001; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6106099\n"); + end + ReadData1E = 64'hC0CFBFFF80000000; + ReadData2E = 64'h00228A37DFF78A3F; + ReadData3E = 64'h92AFFFFFFFFF007F; + ans = 64'h92AFFFFFFFFF007F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6107100\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h8010000000000000; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6108101\n"); + end + ReadData1E = 64'h7D100FFFFFFF0000; + ReadData2E = 64'h439000000007FFC0; + ReadData3E = 64'hC00FFFFFFFFFFFFE; + ans = 64'h7FF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6109102\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h801FFFFFFFFFFFFE; + ReadData3E = 64'h400FB00000000000; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6110103\n"); + end + ReadData1E = 64'hB6E000008003FFFF; + ReadData2E = 64'h257777E3114BF074; + ReadData3E = 64'hBFD000001E000000; + ans = 64'hBFD000001E000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6111104\n"); + end + ReadData1E = 64'h08EFFF7FFFFFEFFF; + ReadData2E = 64'hBCA0000000000001; + ReadData3E = 64'hBCA0000000000000; + ans = 64'hBCA0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6112105\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hC010020080000000; + ReadData3E = 64'hC1EDFF7FFFFFFFFF; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6113106\n"); + end + ReadData1E = 64'h40101BFFFFFFFFFF; + ReadData2E = 64'hBFD0000000000000; + ReadData3E = 64'hC80FF80010000000; + ans = 64'hC80FF80010000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6114107\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hC80457DAEE9BCF35; + ReadData3E = 64'h4340000000000001; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6115108\n"); + end + ReadData1E = 64'h37F0FFFFFFF7FFFF; + ReadData2E = 64'hC03E0000000003FF; + ReadData3E = 64'hF75FFFDFFFFFBFFF; + ans = 64'hF75FFFDFFFFFBFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6116109\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hBFDFFFFFFFFFFFFE; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6117110\n"); + end + ReadData1E = 64'hD2F0000006000000; + ReadData2E = 64'hB89DAAFE8EF95075; + ReadData3E = 64'h3FDFFFFFFFFFFFFE; + ans = 64'h4B9DAAFE9A196FEB; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6118111\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hBFEFFFFFFFFFFFFF; + ReadData3E = 64'h0BDFFFFFFFFF8000; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6119112\n"); + end + ReadData1E = 64'hCA280C484B1B67F2; + ReadData2E = 64'h801AD42AB6BABFF9; + ReadData3E = 64'hC3CFFFFFFFFC001F; + ans = 64'hC3CFFFFFFFFC001F; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6120113\n"); + end + ReadData1E = 64'hBFC0180000000000; + ReadData2E = 64'hBFF0000000000000; + ReadData3E = 64'hFFF0000000000000; + ans = 64'hFFF0000000000000; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6121114\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h43EFFE0000000003; + ReadData3E = 64'h3F6000000001FFEF; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6122115\n"); + end + ReadData1E = 64'h3F94A26A044D8F04; + ReadData2E = 64'hBFFFFFFFFFFFFFFE; + ReadData3E = 64'hB5824271EA9AB858; + ans = 64'hBFA4A26A044D8F03; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6123116\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'h890FFFFFF7EFFFFF; + ReadData3E = 64'hBFF0000000000001; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6124117\n"); + end + ReadData1E = 64'h222FFFFFEFFFF7FF; + ReadData2E = 64'hBFB105443CB4C2F0; + ReadData3E = 64'h40C22E1A1BF39AB3; + ans = 64'h40C22E1A1BF39AB3; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6125118\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hC00FFFFFFFFFFFFE; + ReadData3E = 64'h3FFFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6126119\n"); + end + ReadData1E = 64'h4030020000000FFF; + ReadData2E = 64'hBFBFFFFFFFFFFFFE; + ReadData3E = 64'h800FFFFFFFFFFFFE; + ans = 64'hC000020000000FFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6127120\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hC010000000000001; + ReadData3E = 64'h3FD0000DFFFFFFFF; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6128121\n"); + end + ReadData1E = 64'h3817B2A881BAB728; + ReadData2E = 64'hB7F000FFFC000000; + ReadData3E = 64'hC01000200FFFFFFE; + ans = 64'hC01000200FFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6129122\n"); + end + ReadData1E = 64'h40000010003FFFFF; + ReadData2E = 64'hC340000000000000; + ReadData3E = 64'h4010000000000000; + ans = 64'hC3500010003FFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6130123\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hB2CE000000000200; + ReadData3E = 64'h41FFFFC000000001; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6131124\n"); + end + ReadData1E = 64'h43C0100080000000; + ReadData2E = 64'hC34FFFFFFFFFFFFF; + ReadData3E = 64'h35DFDFFFFE000000; + ans = 64'hC72010007FFFFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6132125\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hB81F7FFFFFFEFFFE; + ReadData3E = 64'h3CA0000000000001; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6133126\n"); + end + ReadData1E = 64'hBFFFFFFFFFFFFFF8; + ReadData2E = 64'h002C007FFFFFFFFE; + ReadData3E = 64'hF2500001003FFFFF; + ans = 64'hF2500001003FFFFF; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6134127\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hFFEFFFFFFFFFFFFF; + ReadData3E = 64'hBCAFFFFFFFFFFFFE; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6135128\n"); + end + ReadData1E = 64'hD0900007FFFBFFFF; + ReadData2E = 64'h43EFFFFFEFFC0000; + ReadData3E = 64'hC34FFFFFFFFFFFFE; + ans = 64'hD4900007F7F9FBFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6136129\n"); + end + ReadData1E = 64'hFFFFFFFFFFFFFFFE; + ReadData2E = 64'hFFF0000000000001; + ReadData3E = 64'hC1FA1B4642D10235; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6137130\n"); + end + ReadData1E = 64'hC0F00000000FFFEF; + ReadData2E = 64'h800FFFFFFEFDFFFF; + ReadData3E = 64'h43BFFFFFEFDFFFFE; + ans = 64'h43BFFFFFEFDFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6138131\n"); + end + ReadData1E = 64'hBF600FFFFBFFFFFE; + ReadData2E = 64'hFFFFFFFFFFFFFFFE; + ReadData3E = 64'hBFE0000000000000; + ans = 64'hFFFFFFFFFFFFFFFE; + FrmE = 3'b000; +#10 + // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this + // standard does not interpret the sign of a NaN." + wnan = &FmaResultM[62:52] && |FmaResultM[51:0]; + xnan = &ReadData1E[62:52] && |ReadData1E[51:0]; + ynan = &ReadData2E[62:52] && |ReadData2E[51:0]; + znan = &ReadData3E[62:52] && |ReadData3E[51:0]; + ansnan = &ans[62:52] && |ans[51:0]; + xnorm = ~(|ReadData1E[62:52]) && |ReadData1E[51:0] ? {ReadData1E[50:0], 1'b0} : ReadData1E; + ynorm = ~(|ReadData2E[62:52]) && |ReadData2E[51:0] ? {ReadData2E[50:0], 1'b0} : ReadData2E; + if((!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {ReadData1E[62:52],1'b1,ReadData1E[50:0]})) || (ynan && (FmaResultM[62:0] == {ReadData2E[62:52],1'b1,ReadData2E[50:0]})) || (znan && (FmaResultM[62:0] == {ReadData3E[62:52],1'b1,ReadData3E[50:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin + $fwrite(fp, "%h %h %h %h %h Wrong ",ReadData1E,ReadData2E, ReadData3E, FmaResultM, ans); + $fwrite(fp, "FmaResultM=%d ",$signed(aligncntE)); + if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); + if(~(|ReadData1E[62:52]) && |ReadData1E[51:0]) $fwrite(fp, "xdenorm "); + if(~(|ReadData2E[62:52]) && |ReadData2E[51:0]) $fwrite(fp, "ydenorm "); + if(~(|ReadData3E[62:52]) && |ReadData3E[51:0]) $fwrite(fp, "zdenorm "); + if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); + if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); + if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); + if(FmaResultM == 64'hFFF0000000000000) $fwrite(fp, "FmaResultM=-inf "); + if(FmaResultM == 64'h7FF0000000000000) $fwrite(fp, "FmaResultM=+inf "); + if(FmaResultM > 64'h7FF0000000000000 && FmaResultM < 64'h7FF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM > 64'hFFF8000000000000 && FmaResultM < 64'hFFF8000000000000 ) $fwrite(fp, "FmaResultM=sigNaN "); + if(FmaResultM >= 64'h7FF8000000000000 && FmaResultM <= 64'h7FFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(FmaResultM >= 64'hFFF8000000000000 && FmaResultM <= 64'hFFFfffffffffffff ) $fwrite(fp, "FmaResultM=qutNaN "); + if(ans == 64'hFFF0000000000000) $fwrite(fp, "ans=-inf "); + if(ans == 64'h7FF0000000000000) $fwrite(fp, "ans=+inf "); + if(ans > 64'h7FF0000000000000 && ans < 64'h7FF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans > 64'hFFF8000000000000 && ans < 64'hFFF8000000000000 ) $fwrite(fp, "ans=sigNaN "); + if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $fwrite(fp, "ans=qutNaN "); + $fwrite(fp,"6139132\n"); end $stop; end diff --git a/wally-pipelined/src/fpu/FMA/tbgen/tbhead.v b/wally-pipelined/src/fpu/FMA/tbgen/tbhead.v index 77aab1e36..63b3b71b4 100644 --- a/wally-pipelined/src/fpu/FMA/tbgen/tbhead.v +++ b/wally-pipelined/src/fpu/FMA/tbgen/tbhead.v @@ -11,26 +11,25 @@ module tb; wire [4:0] FmaFlagsM; wire [12:0] aligncntE; // status flags - wire [105:0] rE; // one result of partial product sum - wire [105:0] sE; // other result of partial products - wire [163:0] tE; // wire of alignment shifter + wire [105:0] ProdManE; // other result of partial products + wire [161:0] AlignedAddendE; // wire of alignment shifter wire [8:0] normcntE; // shift count for normalizer - wire [12:0] aeE; // multiplier expoent - wire bsE; // sticky bit of addend - wire killprodE; // ReadData3E >> product + wire [12:0] ProdExpE; // multiplier expoent + wire AddendStickyE; // sticky bit of addend + wire KillProdE; // ReadData3E >> product wire prodofE; // ReadData1E*ReadData2E out of range - wire xzeroE; + wire XZeroE; wire yzeroE; wire zzeroE; - wire xdenormE; - wire ydenormE; - wire zdenormE; - wire xinfE; - wire yinfE; - wire zinfE; - wire xnanE; - wire ynanE; - wire znanE; + wire XDenormE; + wire YDenormE; + wire ZDenormE; + wire XInfE; + wire YInfE; + wire ZInfE; + wire XNaNE; + wire YNaNE; + wire ZNaNE; wire nanE; wire [8:0] sumshiftE; wire sumshiftzeroE; @@ -45,16 +44,16 @@ reg ansnan; reg [105:0] s; // partial product 2 reg [51:0] xnorm; reg [51:0] ynorm; +wire [3:0] FOpCtrlM; + +assign FOpCtrlM = 4'b0; localparam period = 20; fma1 UUT1(.*); -fma2 UUT2(.ReadData1M(ReadData1E), .ReadData2M(ReadData2E), .ReadData3M(ReadData3E), .FrmM(FrmE), - .aligncntM(aligncntE), .rM(rE), .sM(sE), - .tM(tE), .normcntM(normcntE), .aeM(aeE), .bsM(bsE),.killprodM(killprodE), - .xzeroM(xzeroE), .yzeroM(yzeroE),.zzeroM(zzeroE),.xdenormM(xdenormE),.ydenormM(ydenormE), - .zdenormM(zdenormE),.xinfM(xinfE),.yinfM(yinfE),.zinfM(zinfE),.xnanM(xnanE),.ynanM(ynanE),.znanM(znanE), - .nanM(nanE),.sumshiftM(sumshiftE),.sumshiftzeroM(sumshiftzeroE), .prodinfM(prodinfE), .*); +fma2 UUT2(.ReadData1M(ReadData1E), .ReadData2M(ReadData2E), .ReadData3M(ReadData3E), .FrmM(FrmE), .ProdManM(ProdManE), + .AlignedAddendM(AlignedAddendE), .ProdExpM(ProdExpE), .AddendStickyM(AddendStickyE),.KillProdM(KillProdE), + .XZeroM(XZeroE),.YZeroM(YZeroE),.ZZeroM(ZZeroE),.XInfM(XInfE),.YInfM(YInfE),.ZInfM(ZInfE),.XNaNM(XNaNE),.YNaNM(YNaNE),.ZNaNM(ZNaNE), .*); initial diff --git a/wally-pipelined/src/fpu/add.sv b/wally-pipelined/src/fpu/add.sv deleted file mode 100644 index 4c85c01ff..000000000 --- a/wally-pipelined/src/fpu/add.sv +++ /dev/null @@ -1,65 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Block Name: add.v -// Author: David Harris -// Date: 11/12/1995 -// -// Block Description: -// This block performs the addition of the product and addend. It also -// contains logic necessary to adjust the signs for effective subtracts -// and negative results. -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -module add(rM, sM, tM, sum, - negsum, invz, selsum1, negsum0, negsum1, killprodM); -//////////////////////////////////////////////////////////////////////////////// - - input logic [105:0] rM; // partial product 1 - input logic [105:0] sM; // partial product 2 - input logic [163:0] tM; // aligned addend - input logic invz; // invert addend - input logic selsum1; // select +1 mode of compound adder - input logic killprodM; // z >> product - input logic negsum; // Negate sum - output logic [163:0] sum; // sum - output logic negsum0; // sum was negative in +0 mode - output logic negsum1; // sum was negative in +1 mode - - // Internal nodes - - wire [105:0] r2; // partial product possibly zeroed out - wire [105:0] s2; // partial product possibly zeroed out - wire [164:0] t2; // addend after inversion if necessary - wire [164:0] sum0; // sum of compound adder +0 mode - wire [164:0] sum1; // sum of compound adder +1 mode - wire [163:0] prodshifted; // sum of compound adder +1 mode - wire [164:0] tmp; // sum of compound adder +1 mode - - // Invert addend if z'sM sign is diffrent from the product'sM sign - - assign t2 = invz ? ~{1'b0,tM} : {1'b0,tM}; - - // Zero out product if Z >> product or product really should be - - assign r2 = killprodM ? 106'b0 : rM; - assign s2 = killprodM ? 106'b0 : sM; - - //***replace this with a more structural cpa that synthisises better - // Compound adder - // Consists of 3:2 CSA followed by long compound CPA - //assign prodshifted = killprodM ? 0 : {56'b0, r2+s2, 2'b0}; - //assign tmp = ({{57{r2[105]}},r2, 2'b0} + {{57{s2[105]}},s2, 2'b0}); - assign sum0 = t2 + 164'b0 + {57'b0, r2+s2, 2'b0}; - assign sum1 = t2 + 164'b1 + {57'b0, r2+s2, 2'b0}; // +1 from invert of z above - - // Check sign bits in +0/1 modes - assign negsum0 = sum0[164]; - assign negsum1 = sum1[164]; - - // Mux proper result (+Oil mode and inversion) using 4:1 mux - //assign sumzero = |sum; - assign sum = selsum1 ? (negsum ? -sum1[163:0] : sum1[163:0]) : (negsum ? -sum0[163:0] : sum0[163:0]); - -endmodule - diff --git a/wally-pipelined/src/fpu/align.sv b/wally-pipelined/src/fpu/align.sv deleted file mode 100644 index e0382b7d2..000000000 --- a/wally-pipelined/src/fpu/align.sv +++ /dev/null @@ -1,88 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Block Name: align.v -// Author: David Harris -// Date: 11/2/1995 -// -// Block Description: -// This block implements the alignment shifter. It is responsible for -// adjusting the fraction portion of the addend relative to the fraction -// produced in the multiplier array. -// -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -module align(zman, aligncntE, xzeroE, yzeroE, zzeroE, zdenormE, tE, bsE, - killprodE, sumshiftE, sumshiftzeroE); -///////////////////////////////////////////////////////////////////////////// - - input logic [51:0] zman; // Fraction of addend z; - input logic [12:0] aligncntE; // amount to shift - input logic xzeroE; // Input X = 0 - input logic yzeroE; // Input Y = 0 - input logic zzeroE; // Input Z = 0 - input logic zdenormE; // Input Z is denormalized - output logic [163:0] tE; // aligned addend (54 bits left of bpt) - output logic bsE; // sticky bit of addend - output logic killprodE; // Z >> product - output logic [8:0] sumshiftE; - output logic sumshiftzeroE; - - // Internal nodes - - reg [215:0] shift; // aligned addend from shifter - logic [12:0] tmp; - - - - always_comb - begin - - // Default to clearing sticky bits - bsE = 0; - - // And to using product as primary operand in adder I exponent gen - killprodE = xzeroE | yzeroE; - // d = aligncntE - // p = 53 - //***try reducing this hardware to use one shifter - if ($signed(aligncntE) <= $signed(-(13'd105))) begin //d<=-2p+1 - //product ancored case with saturated shift - sumshiftE = 163; // 3p+4 - sumshiftzeroE = 0; - shift = {1'b1,zman,163'b0} >> sumshiftE; - tE = zzeroE ? 0 : {shift[215:52]}; - bsE = |(shift[51:0]); - - end else if($signed(aligncntE) <= $signed(13'd2)) begin // -2p+1> sumshiftE; - tE = zzeroE ? 0 : {shift[215:52]}; - bsE = |(shift[51:0]); - - end else if ($signed(aligncntE)<=$signed(13'd55)) begin // 2 < d <= p+2 - // addend ancored case - // used to be 56 \/ somthing doesn't seem right too many typos - tmp = 13'd57-aligncntE; - sumshiftE = tmp[8:0]; - sumshiftzeroE = 0; - shift = {~zdenormE,zman, 163'b0} >> sumshiftE; - tE = zzeroE ? 0 : {shift[215:52]}; - bsE = |(shift[51:0]); - - end else begin // d >= p+3 - // addend anchored case with saturated shift - sumshiftE = 0; - sumshiftzeroE = 1; - shift = {~zdenormE,zman, 163'b0} >> sumshiftE; - tE = zzeroE ? 0 : {shift[215:52]}; - bsE = |(shift[51:0]); - killprodE = 1; - - end - end - -endmodule - diff --git a/wally-pipelined/src/fpu/booth.sv b/wally-pipelined/src/fpu/booth.sv deleted file mode 100644 index f43cb5845..000000000 --- a/wally-pipelined/src/fpu/booth.sv +++ /dev/null @@ -1,53 +0,0 @@ -module booth(xExt, choose, add1, e, pp); -///////////////////////////////////////////////////////////////////////////// - - input logic [53:0] xExt; // multiplicand xExt - input logic [2:0] choose; // bits needed to choose which encoding - output logic [1:0] add1; // do you add 1 - output logic e; - output logic [54:0] pp; // the resultant encoding - - logic [54:0] temp; - logic [53:0] negx; - //logic temp; - - assign negx = ~xExt; - - always_comb - case (choose) - 3'b000 : pp = 55'b0; // 0 - 3'b001 : pp = {1'b0, xExt}; // 1 - 3'b010 : pp = {1'b0, xExt}; // 1 - 3'b011 : pp = {xExt, 1'b0}; // 2 - 3'b100 : pp = {negx, 1'b0}; // -2 - 3'b101 : pp = {1'b1, negx}; // -1 - 3'b110 : pp = {1'b1, negx}; // -1 - 3'b111 : pp = '1; // -0 - endcase - - always_comb - case (choose) - 3'b000 : e = 0; // 0 - 3'b001 : e = 0; // 1 - 3'b010 : e = 0; // 1 - 3'b011 : e = 0; // 2 - 3'b100 : e = 1; // -2 - 3'b101 : e = 1; // -1 - 3'b110 : e = 1; // -1 - 3'b111 : e = 1; // -0 - endcase - // assign add1 = (choose[2] == 1'b1) ? ((choose[1:0] == 2'b11) ? 1'b0 : 1'b1) : 1'b0; - // assign add1 = choose[2]; - always_comb - case (choose) - 3'b000 : add1 = 2'b0; // 0 - 3'b001 : add1 = 2'b0; // 1 - 3'b010 : add1 = 2'b0; // 1 - 3'b011 : add1 = 2'b0; // 2 - 3'b100 : add1 = 2'b10; // -2 - 3'b101 : add1 = 2'b1; // -1 - 3'b110 : add1 = 2'b1; // -1 - 3'b111 : add1 = 2'b1; // -0 - endcase - -endmodule diff --git a/wally-pipelined/src/fpu/compressors.sv b/wally-pipelined/src/fpu/compressors.sv deleted file mode 100644 index 1e975e43c..000000000 --- a/wally-pipelined/src/fpu/compressors.sv +++ /dev/null @@ -1,93 +0,0 @@ -// //***breaks lint with warnings like: %Warning-UNOPTFLAT: Example path: src/fpu/compressors.sv:37: ASSIGNW -// //%Warning-UNOPTFLAT: Example path: src/fpu/compressors.sv:32: wallypipelinedsoc.hart.fpu.fma1.multiply.genblk5[0].add4.cout - -// module add3comp2(a, b, c, carry, sum); -// ///////////////////////////////////////////////////////////////////////////// -// //look into diffrent implementations of the compressors? - -// parameter BITS = 4; -// input logic [BITS-1:0] a; -// input logic [BITS-1:0] b; -// input logic [BITS-1:0] c; -// output logic [BITS-1:0] carry; -// output logic [BITS-1:0] sum; -// genvar i; - -// generate -// for(i= 0; i 2046 && ~aeE[12]); - - // Compute alignment shift count - // Adjust for postrounding normalization of Z. - // This should not increas the critical path because the time to - // check if a round overflows is shorter than the actual round and - // is masked by the bypass mux and two 10 bit adder delays. - // assign aligncnt0 = - 1 + ~xdenormE + ~ydenormE - ~zdenormE; - // assign aligncnt1 = - 1 + {12'b0,~xdenormE} + {12'b0,~ydenormE} - {12'b0,~zdenormE}; - assign aligncntE = {2'b0,zexp} -aeE - 1 + {12'b0,~xdenormE} + {12'b0,~ydenormE} - {12'b0,~zdenormE}; - //assign aligncntE = zexp -aeE - 1 + ~xdenormE + ~ydenormE - ~zdenormE; - //assign aligncntE = zexp - aeE;// KEP use all of aeE - - // Select exponent (usually from product except in case of huge addend) - - //assign be = zexpsel ? zexp : aeE; - - // Adjust exponent based on normalization - // A compound adder takes care of the case of post-rounding normalization - // requiring an extra increment - - //assign de0 = sumzero ? 13'b0 : be + normcnt + 2; - // assign de1 = sumzero ? 13'b0 : be + normcnt + 2; - - - // bypass occurs before rounding or taking early results - - //assign wbypass = de0[10:0]; - - // In a non-critical special mux, we combine the early result from other - // FPU blocks with the results of exceptional conditions. Overflow - // produces either infinity or the largest finite number, depending on the - // rounding mode. NaNs are propagated or generated. -endmodule - - diff --git a/wally-pipelined/src/fpu/expgen2.sv b/wally-pipelined/src/fpu/expgen2.sv deleted file mode 100644 index e99d133d5..000000000 --- a/wally-pipelined/src/fpu/expgen2.sv +++ /dev/null @@ -1,108 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Block Name: expgen.v -// Author: David Harris -// Date: 11/2/1995 -// -// Block Description: -// This block implements the exponent path of the FMAC. It performs the -// following operations: -// -// 1) Compute exponent of multiply. -// 2) Compare multiply and add exponents to generate alignment shift count -// 3) Adjust exponent based on normalization -// 4) Increment exponent based on postrounding renormalization -// -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -module expgen2(xexp, yexp, zexp, - sumzero, resultdenorm, infinity, - FmaFlagsM, inf, expplus1, - nanM, de0, xnanM, ynanM, znanM, specialsel, - wexp, - sumof, sumuf); -///////////////////////////////////////////////////////////////////////////// - - input logic [62:52] xexp; // Exponent of multiplicand x - input logic [62:52] yexp; // Exponent of multiplicand y - input logic [62:52] zexp; // Exponent of addend z - input logic sumzero; // sum exactly equals zero - input logic resultdenorm; // postnormalize rounded result - input logic infinity; // generate infinity on overflow - input logic [4:0] FmaFlagsM; // Result invalid - input logic inf; // Some input is infinity - input logic nanM; // Some input is NaN - input logic [12:0] de0; // X is NaN NaN - input logic xnanM; // X is NaN - input logic ynanM; // Y is NaN - input logic znanM; // Z is NaN - input logic expplus1; - input logic specialsel; // Select special result - output logic [62:52] wexp; // Exponent of result - output logic sumof; // X*Y+Z exponent out of bounds - output logic sumuf; // X*Y+Z exponent underflows - - // Internal nodes - - - wire [12:0] aligncnt0; // Shift count for alignment - wire [12:0] aligncnt1; // Shift count for alignment - wire [12:0] be; // Exponent of multiply - wire [12:0] de1; // Normalized exponent - wire [12:0] de; // Normalized exponent - wire [10:0] infinityres; // Infinity or max number - wire [10:0] nanres; // Nan propagated or generated - wire [10:0] specialres; // Exceptional case result - - // Compute exponent of multiply - // Note that the exponent does not have to be incremented on a postrounding - // normalization of X because the mantissa was already increased. Report - // if exponent is out of bounds - - // Select exponent (usually from product except in case of huge addend) - - //assign be = zexpsel ? zexp : ae; - - // Adjust exponent based on normalization - // A compound adder takes care of the case of post-rounding normalization - // requiring an extra increment - - //assign de0 = sumzero ? 13'b0 : be + normcnt + 2; - // assign de1 = sumzero ? 13'b0 : be + normcnt + 2; - - - // check for exponent out of bounds after add - - assign de = resultdenorm | sumzero ? 0 : de0; - assign sumof = ~de[12] && de > 2046; - assign sumuf = de == 0 && ~sumzero && ~resultdenorm; - - // bypass occurs before rounding or taking early results - - //assign wbypass = de0[10:0]; - - // In a non-critical special mux, we combine the early result from other - // FPU blocks with the results of exceptional conditions. Overflow - // produces either infinity or the largest finite number, depending on the - // rounding mode. NaNs are propagated or generated. - - assign specialres = FmaFlagsM[4] | nanM ? nanres : // invalid - FmaFlagsM[2] ? infinityres : //overflow - inf ? 11'b11111111111 : - FmaFlagsM[1] ? 11'b0 : 11'bx; //underflow - - assign infinityres = infinity ? 11'b11111111111 : 11'b11111111110; - - // IEEE 754-2008 section 6.2.3 states: - // "If two or more inputs are NaN, then the payload of the resulting NaN should be - // identical to the payload of one of the input NaNs if representable in the destination - // format. This standard does not specify which of the input NaNs will provide the payload." - assign nanres = xnanM ? xexp : (ynanM ? yexp : (znanM? zexp : 11'b11111111111)); - - // A mux selects the early result from other FPU blocks or the - // normalized FMAC result. Special cases are also detected. - - assign wexp = specialsel ? specialres[10:0] : de[10:0] + {10'b0,expplus1}; -endmodule - - diff --git a/wally-pipelined/src/fpu/fctrl.sv b/wally-pipelined/src/fpu/fctrl.sv index 220ccd8f7..851f384bc 100755 --- a/wally-pipelined/src/fpu/fctrl.sv +++ b/wally-pipelined/src/fpu/fctrl.sv @@ -168,8 +168,8 @@ module fctrl ( //fma/mult // fmadd = ?000 // fmsub = ?001 - // fnmadd = ?010 - // fnmsub = ?011 + // fnmsub = ?010 -(a*b)+c + // fnmadd = ?011 -(a*b)-c // fmul = ?100 // {?, is mul, is negitive, is sub} 3'b010 : begin FOpCtrlD = {1'b0, OpD[4:2]}; FInput2UsedD = 1'b1; FInput3UsedD = ~OpD[4]; end diff --git a/wally-pipelined/src/fpu/flag1.sv b/wally-pipelined/src/fpu/flag1.sv deleted file mode 100644 index f9553c714..000000000 --- a/wally-pipelined/src/fpu/flag1.sv +++ /dev/null @@ -1,34 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Block Name: flag.v -// Author: David Harris -// Date: 12/6/1995 -// -// Block Description: -// This block generates the flags: invalid, overflow, underflow, inexact. -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -module flag1(xnanE, ynanE, znanE, prodof, prodinfE, nanE); -///////////////////////////////////////////////////////////////////////////// - - input logic xnanE; // X is NaN - input logic ynanE; // Y is NaN - input logic znanE; // Z is NaN - input logic prodof; // X*Y overflows exponent - output logic nanE; // Some source is NaN - - // Internal nodes - - output logic prodinfE; // X*Y larger than max possible - - // If any input logic is NaN, propagate the NaN - - assign nanE = xnanE || ynanE || znanE; - - - // Generate infinity checks - - assign prodinfE = prodof && ~xnanE && ~ynanE; - - -endmodule diff --git a/wally-pipelined/src/fpu/flag2.sv b/wally-pipelined/src/fpu/flag2.sv deleted file mode 100644 index 9931f5a69..000000000 --- a/wally-pipelined/src/fpu/flag2.sv +++ /dev/null @@ -1,80 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Block Name: flag.v -// Author: David Harris -// Date: 12/6/1995 -// -// Block Description: -// This block generates the flags: invalid, overflow, underflow, inexact. -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -module flag2(xsign,ysign,zsign, xnanM, ynanM, znanM, xinfM, yinfM, zinfM, sumof, sumuf, - xzeroM, yzeroM, zzeroM, vbits, killprodM, - inf, nanM, FmaFlagsM,sticky,prodinfM); -///////////////////////////////////////////////////////////////////////////// - - input logic xnanM; // X is NaN - input logic ynanM; // Y is NaN - input logic znanM; // Z is NaN - input logic xsign; // Sign of z - input logic ysign; // Sign of z - input logic zsign; // Sign of z - input logic sticky; // X is Inf - input logic prodinfM; - input logic xinfM; // X is Inf - input logic yinfM; // Y is Inf - input logic zinfM; // Z is Inf - input logic sumof; // X*Y + z underflows exponent - input logic sumuf; // X*Y + z underflows exponent - input logic xzeroM; // x = 0 - input logic yzeroM; // y = 0 - input logic zzeroM; // y = 0 - input logic killprodM; - input logic [1:0] vbits; // R and S bits of result - output logic inf; // Some source is Inf - input logic nanM; // Some source is NaN - output logic [4:0] FmaFlagsM; - - // Internal nodes - -logic suminf; - - // Same with infinity (inf - inf and O * inf don't propagate inf - // but it's ok becaue illegal op takes higher precidence) - - assign inf= xinfM || yinfM || zinfM || suminf;//KEP added suminf - //assign inf= xinfM || yinfM || zinfM;//original - - assign suminf = sumof && ~xnanM && ~ynanM && ~znanM; - - - // Set the overflow flag for the following cases: - // 1) Rounded multiply result would be out of bounds - // 2) Rounded add result would be out of bounds - - assign FmaFlagsM[2] = suminf && ~inf; - - // Set the underflow flag for the following cases: - // 1) Any input logic is denormalized - // 2) output logic would be denormalized or smaller - - assign FmaFlagsM[1] = (sumuf && ~inf && ~prodinfM && ~nanM) || (killprodM & zzeroM & ~(yzeroM | xzeroM)); - - // Set the inexact flag for the following cases: - // 1) Multiplication inexact - // 2) Addition inexact - // One of these cases occurred if the R or S bit is set - - assign FmaFlagsM[0] = (vbits[0] || vbits[1] ||sticky || suminf) && ~(inf || nanM); - - // Set invalid flag for following cases: - // 1) Inf - Inf - // 2) 0 * Inf - // 3) output logic = NaN (this is not part of the IEEE spec, only 486 proj) - - assign FmaFlagsM[4] = (xinfM || yinfM || prodinfM) && zinfM && (xsign ^ ysign ^ zsign) || - xzeroM && yinfM || yzeroM && xinfM;// KEP remove case 3) above - - assign FmaFlagsM[3] = 0; // divide by zero flag - -endmodule diff --git a/wally-pipelined/src/fpu/fma1.sv b/wally-pipelined/src/fpu/fma1.sv index e4f818c8f..0a64f0ba9 100644 --- a/wally-pipelined/src/fpu/fma1.sv +++ b/wally-pipelined/src/fpu/fma1.sv @@ -1,103 +1,141 @@ - //////////////////////////////////////////////////////////////////////////////// -// Block Name: fmac.v -// Author: David Harris -// Date: 11/2/1995 -// -// Block Description: -// This is the top level block of a floating-point multiply/accumulate -// unit(FMAC). It instantiates the following sub-blocks: -// -// array Booth encoding, partial product generation, product summation -// expgen Exponent summation, compare, and adjust -// align Alignment shifter -// add Carry-save adder for accumulate, carry propagate adder -// lza Leading zero anticipator to control normalization shifter -// normalize Normalization shifter -// round Rounding of result -// exception Handles exceptional cases -// bypass Handles bypass of result to FInput1E or FInput3E inputs -// sign One bit sign handling block -// special Catch special cases (inputs = 0 / infinity / etc.) -// -// The FMAC computes FmaResultM=FInput1E*FInput2E+FInput3E, rounded with the mode specified by -// RN, RZ, RM, or RP. The result is optionally bypassed back to -// the FInput1E or FInput3E inputs for use on the next cycle. In addition, four signals -// are produced: trap, overflow, underflow, and inexact. Trap indicates -// an infinity, NaN, or denormalized number to be handled in software; -// the other three signals are IEEE flags. -// -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -module fma1(FInput1E, FInput2E, FInput3E, FrmE, - rE, sE, tE, bsE, killprodE, sumshiftE, sumshiftzeroE, aligncntE, aeE - , xzeroE, yzeroE, zzeroE, xnanE,ynanE, znanE, xdenormE, ydenormE, zdenormE, - xinfE, yinfE, zinfE, nanE, prodinfE); -///////////////////////////////////////////////////////////////////////////// +module fma1( - input logic [63:0] FInput1E; // input 1 - input logic [63:0] FInput2E; // input 2 - input logic [63:0] FInput3E; // input 3 - input logic [2:0] FrmE; // Rounding mode - output logic [12:0] aligncntE; // status flags - output logic [105:0] rE; // one result of partial product sum - output logic [105:0] sE; // other result of partial products - output logic [163:0] tE; // output logic of alignment shifter - output logic [12:0] aeE; // multiplier expoent - output logic bsE; // sticky bit of addend - output logic killprodE; // FInput3E >> product - output logic xzeroE; - output logic yzeroE; - output logic zzeroE; - output logic xdenormE; - output logic ydenormE; - output logic zdenormE; - output logic xinfE; - output logic yinfE; - output logic zinfE; - output logic xnanE; - output logic ynanE; - output logic znanE; - output logic nanE; - output logic prodinfE; - output logic [8:0] sumshiftE; - output logic sumshiftzeroE; + input logic [63:0] FInput1E, + input logic [63:0] FInput2E, + input logic [63:0] FInput3E, + input logic [3:0] FOpCtrlE, + output logic [105:0] ProdManE, + output logic [161:0] AlignedAddendE, + output logic [12:0] ProdExpE, + output logic AddendStickyE, + output logic KillProdE, + output logic XZeroE, YZeroE, ZZeroE, + output logic XInfE, YInfE, ZInfE, + output logic XNaNE, YNaNE, ZNaNE); -// Internal nodes - -// output logic [12:0] aligncntE; // shift count for alignment + logic [51:0] XMan,YMan,ZMan; + logic [10:0] XExp,YExp,ZExp; + logic XSgn,YSgn,ZSgn; + logic [12:0] AlignCnt; + logic [211:0] Shift; + logic XDenormE, YDenormE, ZDenormE; + logic [63:0] FInput3E2; + + // Set addend to zero if FMUL instruction + assign FInput3E2 = FOpCtrlE[2] ? 64'b0 : FInput3E; + + // split inputs into the sign bit, mantissa, and exponent for readability + assign XSgn = FInput1E[63]; + assign YSgn = FInput2E[63]; + assign ZSgn = FInput3E2[63]; + + assign XExp = FInput1E[62:52]; + assign YExp = FInput2E[62:52]; + assign ZExp = FInput3E2[62:52]; + + assign XMan = FInput1E[51:0]; + assign YMan = FInput2E[51:0]; + assign ZMan = FInput3E2[51:0]; - logic prodof; // FInput1E*FInput2E out of range + + // determine if an input is a special value + assign XNaNE = &FInput1E[62:52] && |FInput1E[51:0]; + assign YNaNE = &FInput2E[62:52] && |FInput2E[51:0]; + assign ZNaNE = &FInput3E2[62:52] && |FInput3E2[51:0]; + + assign XDenormE = ~(|FInput1E[62:52]) && |FInput1E[51:0]; + assign YDenormE = ~(|FInput2E[62:52]) && |FInput2E[51:0]; + assign ZDenormE = ~(|FInput3E2[62:52]) && |FInput3E2[51:0]; + + assign XInfE = &FInput1E[62:52] && ~(|FInput1E[51:0]); + assign YInfE = &FInput2E[62:52] && ~(|FInput2E[51:0]); + assign ZInfE = &FInput3E2[62:52] && ~(|FInput3E2[51:0]); + + assign XZeroE = ~(|FInput1E[62:0]); + assign YZeroE = ~(|FInput2E[62:0]); + assign ZZeroE = ~(|FInput3E2[62:0]); + // Calculate the product's exponent + // - When multipliying two fp numbers, add the exponents + // - Subtract 3ff to remove one of the biases (XExp + YExp has two biases, one from each exponent) + // - Denormal numbers have an an exponent value of 1, however they are + // represented with an exponent of 0. add one if there is a denormal number + assign ProdExpE = (XZeroE|YZeroE) ? 13'b0 : + {2'b0, XExp} + {2'b0, YExp} - 13'h3ff + {12'b0, XDenormE} + {12'b0, YDenormE}; + + // Calculate the product's mantissa + // - Add the assumed one. If the number is denormalized or zero, it does not have an assumed one. + assign ProdManE = {53'b0,~(XDenormE|XZeroE),XMan} * {53'b0,~(YDenormE|YZeroE),YMan}; + // determine the shift count for alignment + // - negitive means Z is larger, so shift Z left + // - positive means the product is larger, so shift Z right + // - Denormal numbers have an an exponent value of 1, however they are + // represented with an exponent of 0. add one to the exponent if it is a denormal number + assign AlignCnt = ProdExpE - {2'b0, ZExp} - {12'b0, ZDenormE}; + + // Alignment shifter + + // Defualt Addition without shifting + // | 55'b0 | 106'b(product) | 2'b0 | + // |1'b0| addnend | + + // the 1'b0 before the added is because the product's mantissa has two bits before the decimal point (xx.xxxxxxxxxx...) + + always_comb + begin + + // Set default values + AddendStickyE = 0; + KillProdE = 0; + + // If the product is too small to effect the sum, kill the product + + // | 55'b0 | 106'b(product) | 2'b0 | + // | addnend | + if ($signed(AlignCnt) <= $signed(-13'd56)) begin + KillProdE = 1; + AlignedAddendE = {107'b0, ~(ZZeroE|ZDenormE),ZMan,2'b0}; + AddendStickyE = ~(XZeroE|YZeroE); + + // If the Addend is shifted left (negitive AlignCnt) + + // | 55'b0 | 106'b(product) | 2'b0 | + // | addnend | + end else if($signed(AlignCnt) <= $signed(13'd0)) begin + Shift = {55'b0, ~(ZZeroE|ZDenormE),ZMan, 104'b0} << -AlignCnt; + AlignedAddendE = Shift[211:50]; + AddendStickyE = |(Shift[49:0]); + + // If the Addend is shifted right (positive AlignCnt) + + // | 55'b0 | 106'b(product) | 2'b0 | + // | addnend | + end else if ($signed(AlignCnt)<=$signed(13'd105)) begin + Shift = {55'b0, ~(ZZeroE|ZDenormE),ZMan, 104'b0} >> AlignCnt; + AlignedAddendE = Shift[211:50]; + AddendStickyE = |(Shift[49:0]); + + // If the addend is too small to effect the addition + // - The addend has to shift two past the end of the addend to be considered too small + // - The 2 extra bits are needed for rounding + + // | 55'b0 | 106'b(product) | 2'b0 | + // | addnend | + end else begin + AlignedAddendE = 162'b0; + AddendStickyE = ~ZZeroE; - - - -// Instantiate fraction datapath - - multiply multiply(.xman(FInput1E[51:0]), .yman(FInput2E[51:0]), .*); - align align(.zman(FInput3E[51:0]),.*); - -// Instantiate exponent datapath - - expgen1 expgen1(.xexp(FInput1E[62:52]),.yexp(FInput2E[62:52]),.zexp(FInput3E[62:52]),.*); -// Instantiate special case detection across datapath & exponent path - - special special(.*); - - -// Instantiate control output logic - -flag1 flag1(.*); + end + end endmodule diff --git a/wally-pipelined/src/fpu/fma2.sv b/wally-pipelined/src/fpu/fma2.sv index 467a4d285..b9ae29eb5 100644 --- a/wally-pipelined/src/fpu/fma2.sv +++ b/wally-pipelined/src/fpu/fma2.sv @@ -1,107 +1,110 @@ - //////////////////////////////////////////////////////////////////////////////// -// Block Name: fmac.v -// Author: David Harris -// Date: 11/2/1995 -// -// Block Description: -// This is the top level block of a floating-point multiply/accumulate -// unit(FMAC). It instantiates the following sub-blocks: -// -// array Booth encoding, partial product generation, product summation -// expgen Mxponent summation, compare, and adjust -// align Alignment shifter -// add Carry-save adder for accumulate, carry propagate adder -// lza Leading zero anticipator to control normalization shifter -// normalize Normalization shifter -// round Rounding of result -// exception Handles exceptional cases -// bypass Handles bypass of result to FInput1M or FInput3M input logics -// sign One bit sign handling block -// special Catch special cases (input logics = 0 / infinity / etc.) -// -// The FMAC computes FmaResultM=FInput1M*FInput2M+FInput3M, rounded with the mode specified by -// RN, RZ, RM, or RP. The result is optionally bypassed back to -// the FInput1M or FInput3M input logics for use on the next cycle. In addition, four signals -// are produced: trap, overflow, underflow, and inexact. Trap indicates -// an infinity, NaN, or denormalized number to be handled in software; -// the other three signals are IMMM flags. -// -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -module fma2(FInput1M, FInput2M, FInput3M, FrmM, - FmaResultM, FmaFlagsM, aligncntM, rM, sM, - tM, normcntM, aeM, bsM,killprodM, - xzeroM, yzeroM,zzeroM,xdenormM,ydenormM, - zdenormM,xinfM,yinfM,zinfM,xnanM,ynanM,znanM, - nanM,sumshiftM,sumshiftzeroM,prodinfM - -); -///////////////////////////////////////////////////////////////////////////// +module fma2( - input logic [63:0] FInput1M; // input logic 1 - input logic [63:0] FInput2M; // input logic 2 - input logic [63:0] FInput3M; // input logic 3 - input logic [2:0] FrmM; // Rounding mode - input logic [12:0] aligncntM; // status flags - input logic [105:0] rM; // one result of partial product sum - input logic [105:0] sM; // other result of partial products - input logic [163:0] tM; // output of alignment shifter - input logic [8:0] normcntM; // shift count for normalizer - input logic [12:0] aeM; // multiplier expoent - input logic bsM; // sticky bit of addend - input logic killprodM; // FInput3M >> product - input logic prodinfM; - input logic xzeroM; - input logic yzeroM; - input logic zzeroM; - input logic xdenormM; - input logic ydenormM; - input logic zdenormM; - input logic xinfM; - input logic yinfM; - input logic zinfM; - input logic xnanM; - input logic ynanM; - input logic znanM; - input logic nanM; - input logic [8:0] sumshiftM; - input logic sumshiftzeroM; - - - output logic [63:0] FmaResultM; // output FmaResultM=FInput1M*FInput2M+FInput3M - output logic [4:0] FmaFlagsM; // status flags + input logic [63:0] FInput1M, + input logic [63:0] FInput2M, + input logic [63:0] FInput3M, + input logic [2:0] FrmM, + input logic [105:0] ProdManM, + input logic [161:0] AlignedAddendM, + input logic [12:0] ProdExpM, + input logic AddendStickyM, + input logic KillProdM, + input logic [3:0] FOpCtrlM, + input logic XZeroM, YZeroM, ZZeroM, + input logic XInfM, YInfM, ZInfM, + input logic XNaNM, YNaNM, ZNaNM, + output logic [63:0] FmaResultM, + output logic [4:0] FmaFlagsM); -// Internal nodes - logic [163:0] sum; // output of carry prop adder - logic [53:0] v; // normalized sum, R, S bits -// logic [12:0] aligncnt; // shift count for alignment - logic [8:0] normcnt; // shift count for normalizer - logic negsum; // negate sum - logic invz; // invert addend - logic selsum1; // select +1 mode of sum - logic negsum0; // sum +0 < 0 - logic negsum1; // sum +1 < 0 - logic sumzero; // sum = 0 - logic infinity; // generate infinity on overflow - logic sumof; // result out of range - logic zexpsel; - logic denorm0; - logic resultdenorm; - logic inf; - logic specialsel; - logic expplus1; - logic sumuf; - logic psign; - logic sticky; - logic [12:0] de0; - logic isAdd; - logic wsign; - logic [51:0] wman; - logic [10:0] wexp; - assign isAdd = 1; + logic [51:0] XMan, YMan, ZMan, WMan; + logic [10:0] XExp, YExp, ZExp, WExp; + logic XSgn, YSgn, ZSgn, WSgn, PSgn; + logic [105:0] ProdMan2; + logic [162:0] AlignedAddend2; + logic [161:0] Sum; + logic [162:0] SumTmp; + logic [12:0] SumExp; + logic [12:0] SumExpMinus1; + logic [12:0] SumExpTmp, SumExpTmpMinus1, WExpTmp; + logic [53:0] NormSum; + logic [161:0] NormSumTmp; + logic [8:0] NormCnt; + logic NormSumSticky; + logic SumZero; + logic NegSum; + logic InvZ; + logic ResultDenorm; + logic Sticky; + logic Plus1, Minus1, Plus1Tmp, Minus1Tmp; + logic Invalid,Underflow,Overflow,Inexact; + logic [8:0] DenormShift; + logic ProdInf, ProdOf, ProdUf; + logic [63:0] FmaResultTmp; + logic SubBySmallNum; + logic [63:0] FInput3M2; + logic ZeroSgn, ResultSgn; + + // Set addend to zero if FMUL instruction + assign FInput3M2 = FOpCtrlM[2] ? 64'b0 : FInput3M; + + // split inputs into the sign bit, mantissa, and exponent for readability + assign XSgn = FInput1M[63]; + assign YSgn = FInput2M[63]; + assign ZSgn = FInput3M2[63]^FOpCtrlM[0]; //Negate Z if subtraction + + assign XExp = FInput1M[62:52]; + assign YExp = FInput2M[62:52]; + assign ZExp = FInput3M2[62:52]; + + assign XMan = FInput1M[51:0]; + assign YMan = FInput2M[51:0]; + assign ZMan = FInput3M2[51:0]; + + + + // Calculate the product's sign + // Negate product's sign if FNMADD or FNMSUB + assign PSgn = XSgn ^ YSgn ^ FOpCtrlM[1]; + + + + + // Addition + + // Negate Z when doing one of the following opperations: + // -prod + Z + // prod - Z + assign InvZ = ZSgn ^ PSgn; + + // Choose an inverted or non-inverted addend - the one is added later + assign AlignedAddend2 = InvZ ? ~{1'b0,AlignedAddendM} : {1'b0,AlignedAddendM}; + // Kill the product if the product is too small to effect the addition (determined in fma1.sv) + assign ProdMan2 = KillProdM ? 106'b0 : ProdManM; + + // Do the addition + // - add one to negate if the added was inverted + // - the 2 extra bits at the begining and end are needed for rounding + assign SumTmp = AlignedAddend2 + {55'b0, ProdMan2,2'b0} + {162'b0, InvZ}; + + // Is the sum negitive + assign NegSum = SumTmp[162]; + // If the sum is negitive, negate the sum. + assign Sum = NegSum ? -SumTmp[161:0] : SumTmp[161:0]; + + + + + + + // Leading one detector + logic [8:0] i; + always_comb begin + i = 0; + while (~Sum[161-i] && $unsigned(i) <= $unsigned(9'd161)) i = i+1; // search for leading one + NormCnt = i+1; // compute shift count + end @@ -113,27 +116,160 @@ module fma2(FInput1M, FInput2M, FInput3M, FrmM, + // Normalization + + + // Determine if the sum is zero + assign SumZero = ~(|Sum); + + // Determine if the result is denormal + assign ResultDenorm = $signed(SumExpTmp)<=0 & ($signed(SumExpTmp+13'd52)>=0); + + // Determine the shift needed for denormal results + assign SumExpTmpMinus1 = SumExpTmp-1; + assign DenormShift = ResultDenorm ? SumExpTmpMinus1[8:0] : 9'b0; + + // Normalize the sum + assign NormSumTmp = SumZero ? 162'b0 : Sum << NormCnt+DenormShift; + assign NormSum = NormSumTmp[161:108]; + // Calculate the sticky bit + assign NormSumSticky = (|NormSumTmp[107:0]); + assign Sticky = AddendStickyM | NormSumSticky; + + // Determine sum's exponent + assign SumExpTmp = KillProdM ? {2'b0, ZExp} : ProdExpM + -({4'b0, NormCnt} - 13'd56); + assign SumExp = SumZero ? 13'b0 : + ResultDenorm ? 13'b0 : + SumExpTmp; -// Instantiate fraction datapath - - add add(.*); - lza lza(.*); - normalize normalize(.zexp(FInput3M[62:52]),.*); - round round(.xman(FInput1M[51:0]), .yman(FInput2M[51:0]),.zman(FInput3M[51:0]),.*); - -// Instantiate exponent datapath - - expgen2 expgen2(.xexp(FInput1M[62:52]),.yexp(FInput2M[62:52]),.zexp(FInput3M[62:52]),.*); -// Instantiate control logic + + + + + // Rounding + + // round to nearest even + // {NormSum[1], NormSum[0], Sticky} + // 0xx - do nothing + // 100 - tie - Plus1 if NormSum[2] = 1 + // - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen + // 101/110/111 - Plus1 + + // round to zero - do nothing + // - subtract 1 if a small number was supposed to be subtracted from the positive result + + // round to -infinity - Plus1 if negitive + // - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen + // - subtract 1 if a small number was supposed to be subtracted from the positive result + + // round to infinity - Plus1 if positive + + // - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen + // - subtract 1 if a small number was supposed to be subtracted from the negitive result + + // round to nearest max magnitude + // {NormSum[1], NormSum[0], Sticky} + // 0xx - do nothing + // 100 - tie - Plus1 + // - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen + // 101/110/111 - Plus1 + + // Deterimine if the result was supposed to be subtrated by a small number + assign SubBySmallNum = AddendStickyM&InvZ&~NormSumSticky; + + always_comb begin + // Determine if you add 1 + case (FrmM) + 3'b000: Plus1Tmp = NormSum[1] & (NormSum[0] | (Sticky&~(~NormSum[0]&SubBySmallNum)) | (~NormSum[0]&~Sticky&NormSum[2]));//round to nearest even + 3'b001: Plus1Tmp = 0;//round to zero + 3'b010: Plus1Tmp = WSgn & ~(SubBySmallNum);//round down + 3'b011: Plus1Tmp = ~WSgn & ~(SubBySmallNum);//round up + 3'b100: Plus1Tmp = (NormSum[1] & (NormSum[0] | (Sticky&~(~NormSum[0]&SubBySmallNum)) | (~NormSum[0]&~Sticky)));//round to nearest max magnitude + default: Plus1Tmp = 1'bx; + endcase + // Determine if you subtract 1 + case (FrmM) + 3'b000: Minus1Tmp = 0;//round to nearest even + 3'b001: Minus1Tmp = SubBySmallNum;//round to zero + 3'b010: Minus1Tmp = ~WSgn & SubBySmallNum;//round down + 3'b011: Minus1Tmp = WSgn & SubBySmallNum;//round up + 3'b100: Minus1Tmp = 0;//round to nearest max magnitude + default: Minus1Tmp = 1'bx; + endcase + + end + + // If an answer is exact don't round + assign Plus1 = Sticky | (|NormSum[1:0]) ? Plus1Tmp : 1'b0; + assign Minus1 = Sticky | (|NormSum[1:0]) ? Minus1Tmp : 1'b0; + // Compute rounded result + assign {WExpTmp, WMan} = {SumExp, NormSum[53:2]} - {64'b0, Minus1} + {64'b0, Plus1}; + assign WExp = WExpTmp[10:0]; + + + + + + + + // Sign calculation + + + // Determine the sign if the sum is zero + // if product underflows then use psign + // otherwise + // if cancelation then 0 unless round to -inf + // otherwise psign + assign ZeroSgn = Underflow & ~ResultDenorm ? PSgn : + (PSgn^ZSgn ? FrmM == 3'b010 : PSgn); + + // is the result negitive + // if p - z is the Sum negitive + // if -p + z is the Sum positive + // if -p - z then the Sum is negitive + assign ResultSgn = InvZ&(ZSgn)&NegSum | InvZ&PSgn&~NegSum | ((ZSgn)&PSgn); + assign WSgn = SumZero ? ZeroSgn : ResultSgn; -sign sign(.xsign(FInput1M[63]),.ysign(FInput2M[63]),.zsign(FInput3M[63]),.*); -flag2 flag2(.xsign(FInput1M[63]),.ysign(FInput2M[63]),.zsign(FInput3M[63]),.vbits(v[1:0]),.*); + // Select the result + assign FmaResultM = XNaNM ? {XSgn, XExp, 1'b1,XMan[50:0]} : + YNaNM ? {YSgn, YExp, 1'b1,YMan[50:0]} : + ZNaNM ? {ZSgn, ZExp, 1'b1,ZMan[50:0]} : + Invalid ? {WSgn, 11'h7ff, 1'b1, 51'b0} : // has to be before inf + XInfM ? {PSgn, XExp, XMan} : + YInfM ? {PSgn, YExp, YMan} : + ZInfM ? {ZSgn, ZExp, ZMan} : + Overflow ? {WSgn, 11'h7ff, 52'b0} : + Underflow & ~ResultDenorm ? {WSgn, 63'b0} - {63'b0, (Minus1&AddendStickyM)} + {63'b0, (Plus1&AddendStickyM)} : + KillProdM ? {ZSgn, ZExp, ZMan} - {63'b0, (Minus1&AddendStickyM)} + {63'b0, (Plus1&AddendStickyM)}: // has to be after Underflow + {WSgn,WExp,WMan}; + -assign FmaResultM = {wsign,wexp,wman}; + // Set Invalid flag for following cases: + // 1) Inf - Inf + // 2) 0 * Inf + // 3) any input is a signaling NaN + assign ProdOf = (ProdExpM >= 2047 && ~ProdExpM[12]); + assign ProdInf = ProdOf && ~XNaNM && ~YNaNM; + assign Invalid = (XNaNM&~XMan[51]) | (YNaNM&~YMan[51]) | (ZNaNM&~ZMan[51]) | ((XInfM || YInfM || ProdInf) & ZInfM & (XSgn ^ YSgn ^ ZSgn)) | (XZeroM & YInfM) | (YZeroM & XInfM); + + // Set Overflow flag if the number is too big to be represented + assign Overflow = WExpTmp >= 2047 & ~WExpTmp[12]; + + // Set Underflow flag if the number is too small to be represented in normal numbers + assign ProdUf = KillProdM & ZZeroM; + assign Underflow = SumExp[12] | ProdUf; + + // Set Inexact flag if the result is diffrent from what would be outputed given infinite precision + assign Inexact = Sticky|Overflow| (|NormSum[1:0]); + + // Combine flags + // - FMA can't set the Divide by zero flag + // - Don't set the underflow flag if the result is exact + assign FmaFlagsM = {Invalid, 1'b0, Overflow, Underflow & Inexact, Inexact}; endmodule diff --git a/wally-pipelined/src/fpu/fpu.sv b/wally-pipelined/src/fpu/fpu.sv index 0a2de521d..e7a734270 100755 --- a/wally-pipelined/src/fpu/fpu.sv +++ b/wally-pipelined/src/fpu/fpu.sv @@ -80,34 +80,17 @@ module fpu ( logic [4:0] FDivFlagsM, FDivFlagsW; // FMA signals - logic [12:0] aligncntE, aligncntM; - logic [105:0] rE, rM; - logic [105:0] sE, sM; - logic [163:0] tE, tM; - logic [8:0] normcntE, normcntM; - logic [12:0] aeE, aeM; - logic bsE, bsM; - logic killprodE, killprodM; - logic prodofE, prodofM; - logic xzeroE, xzeroM; - logic yzeroE, yzeroM; - logic zzeroE, zzeroM; - logic xdenormE, xdenormM; - logic ydenormE, ydenormM; - logic zdenormE, zdenormM; - logic xinfE, xinfM; - logic yinfE, yinfM; - logic zinfE, zinfM; - logic xnanE, xnanM; - logic ynanE, ynanM; - logic znanE, znanM; - logic nanE, nanM; - logic [8:0] sumshiftE, sumshiftM; - logic sumshiftzeroE, sumshiftzeroM; - logic prodinfE, prodinfM; - 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; @@ -241,7 +224,7 @@ module fpu ( .CLK(clk), .ECLK(fpdivClk)); - fpdiv fpdivsqrt (.DivOpType(FOpCtrlE[0]), .clk(fpdivClk)); + fpdiv fpdivsqrt (.DivOpType(FOpCtrlE[0]), .clk(fpdivClk), .*); // first of two-stage instance of floating-point add/cvt unit fpuaddcvt1 fpadd1 (.*); @@ -265,31 +248,20 @@ module fpu ( //***************** // fma E/M pipe registers //***************** - flopenrc #(13) EMRegFma1(clk, reset, PipeClearEM, PipeEnableEM, aligncntE, aligncntM); - flopenrc #(106) EMRegFma2(clk, reset, PipeClearEM, PipeEnableEM, rE, rM); - flopenrc #(106) EMRegFma3(clk, reset, PipeClearEM, PipeEnableEM, sE, sM); - flopenrc #(164) EMRegFma4(clk, reset, PipeClearEM, PipeEnableEM, tE, tM); - flopenrc #(9) EMRegFma5(clk, reset, PipeClearEM, PipeEnableEM, normcntE, normcntM); - flopenrc #(13) EMRegFma6(clk, reset, PipeClearEM, PipeEnableEM, aeE, aeM); - flopenrc #(1) EMRegFma7(clk, reset, PipeClearEM, PipeEnableEM, bsE, bsM); - flopenrc #(1) EMRegFma8(clk, reset, PipeClearEM, PipeEnableEM, killprodE, killprodM); - flopenrc #(1) EMRegFma9(clk, reset, PipeClearEM, PipeEnableEM, prodofE, prodofM); - flopenrc #(1) EMRegFma10(clk, reset, PipeClearEM, PipeEnableEM, xzeroE, xzeroM); - flopenrc #(1) EMRegFma11(clk, reset, PipeClearEM, PipeEnableEM, yzeroE, yzeroM); - flopenrc #(1) EMRegFma12(clk, reset, PipeClearEM, PipeEnableEM, zzeroE, zzeroM); - flopenrc #(1) EMRegFma13(clk, reset, PipeClearEM, PipeEnableEM, xdenormE, xdenormM); - flopenrc #(1) EMRegFma14(clk, reset, PipeClearEM, PipeEnableEM, ydenormE, ydenormM); - flopenrc #(1) EMRegFma15(clk, reset, PipeClearEM, PipeEnableEM, zdenormE, zdenormM); - flopenrc #(1) EMRegFma16(clk, reset, PipeClearEM, PipeEnableEM, xinfE, xinfM); - flopenrc #(1) EMRegFma17(clk, reset, PipeClearEM, PipeEnableEM, yinfE, yinfM); - flopenrc #(1) EMRegFma18(clk, reset, PipeClearEM, PipeEnableEM, zinfE, zinfM); - 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); - flopenrc #(1) EMRegFma22(clk, reset, PipeClearEM, PipeEnableEM, nanE, nanM); - flopenrc #(9) EMRegFma23(clk, reset, PipeClearEM, PipeEnableEM, sumshiftE, sumshiftM); - flopenrc #(1) EMRegFma24(clk, reset, PipeClearEM, PipeEnableEM, sumshiftzeroE, sumshiftzeroM); - flopenrc #(1) EMRegFma25(clk, reset, PipeClearEM, PipeEnableEM, prodinfE, prodinfM); + flopenrc #(106) EMRegFma3(clk, reset, PipeClearEM, PipeEnableEM, ProdManE, ProdManM); + flopenrc #(162) EMRegFma4(clk, reset, PipeClearEM, PipeEnableEM, AlignedAddendE, AlignedAddendM); + flopenrc #(13) EMRegFma6(clk, reset, PipeClearEM, PipeEnableEM, ProdExpE, ProdExpM); + flopenrc #(1) EMRegFma7(clk, reset, PipeClearEM, PipeEnableEM, AddendStickyE, AddendStickyM); + flopenrc #(1) EMRegFma8(clk, reset, PipeClearEM, PipeEnableEM, KillProdE, KillProdM); + flopenrc #(1) EMRegFma10(clk, reset, PipeClearEM, PipeEnableEM, XZeroE, XZeroM); + flopenrc #(1) EMRegFma11(clk, reset, PipeClearEM, PipeEnableEM, YZeroE, YZeroM); + flopenrc #(1) EMRegFma12(clk, reset, PipeClearEM, PipeEnableEM, ZZeroE, ZZeroM); + flopenrc #(1) EMRegFma16(clk, reset, PipeClearEM, PipeEnableEM, XInfE, XInfM); + flopenrc #(1) EMRegFma17(clk, reset, PipeClearEM, PipeEnableEM, YInfE, YInfM); + flopenrc #(1) EMRegFma18(clk, reset, PipeClearEM, PipeEnableEM, ZInfE, ZInfM); + 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); //***************** // fpadd E/M pipe registers diff --git a/wally-pipelined/src/fpu/lza.sv b/wally-pipelined/src/fpu/lza.sv deleted file mode 100644 index a3da4a322..000000000 --- a/wally-pipelined/src/fpu/lza.sv +++ /dev/null @@ -1,40 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Block Name: lop.v -// Author: David Harris -// Date: 11/2/1995 -// -// Block Description: -// This block implements a Leading One Predictor used to determine -// the normalization shift count. -/////////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -module lza(sum, normcnt, sumzero); -///////////////////////////////////////////////////////////////////////////// - - input logic [163:0] sum; // sum - output logic [8:0] normcnt; // normalization shift count - output logic sumzero; // sum = 0 - - // Internal nodes - - reg [8:0] i; // loop index - - // A real LOP uses a fast carry chain to find only the first 0. - // It is an example of a parallel prefix algorithm. For the sake - // of simplicity, this model is behavioral instead. - // A real LOP would also operate on the sources of the adder, not - // the result! - - always_comb - begin - i = 0; - while (~sum[163-i] && i <= 163) i = i+1; // search for leading one - normcnt = i; // compute shift count - end - - // Also check if sum is zero - assign sumzero = ~(|sum); - -endmodule - diff --git a/wally-pipelined/src/fpu/multiply.sv b/wally-pipelined/src/fpu/multiply.sv deleted file mode 100644 index 1771188c6..000000000 --- a/wally-pipelined/src/fpu/multiply.sv +++ /dev/null @@ -1,138 +0,0 @@ - -module multiply(xman, yman, xdenormE, ydenormE, xzeroE, yzeroE, rE, sE); -///////////////////////////////////////////////////////////////////////////// - - input logic [51:0] xman; // Fraction of multiplicand x - input logic [51:0] yman; // Fraction of multiplicand y - input logic xdenormE; // is x denormalized - input logic ydenormE; // is y denormalized - input logic xzeroE; // Z is denorm - input logic yzeroE; // Z is denorm - output logic [105:0] rE; // partial product 1 - output logic [105:0] sE; // partial product 2 - - wire [54:0] yExt; //y with appended 0 and assumed 1 - wire [53:0] xExt; //y with assumed 1 - wire [26:0][1:0] add1; - wire [26:0][54:0] pp; - wire [26:0] e; - logic [106:0] tmpsE; - logic [17:0][106:0] lv1add; - logic [11:0][106:0] lv2add; - logic [7:0][106:0] lv3add; - logic [3:0][106:0] lv4add; - logic [21:0][107:0] carryTmp; - wire [26:0][106:0] acc; - // wire [105:0] acc - genvar i; - - // assign xExt = {1'b0,~(xdenormE|xzeroE),xman}; - // assign yExt = {1'b0,~(ydenormE|yzeroE),yman, 1'b0}; - - // generate - // for(i=0; i<27; i=i+1) begin - // booth booth(.xExt(xExt), .choose(yExt[(i*2)+2:i*2]), .add1(add1[i]), .e(e[i]), .pp(pp[i])); - // end - // endgenerate - - // assign acc[0] = {49'b0,~e[0],e[0],e[0],pp[0]}; - // assign acc[1] = {49'b01,~e[1],pp[1],add1[0]}; - // assign acc[2] = {47'b01,~e[2],pp[2],add1[1], 2'b0}; - // assign acc[3] = {45'b01,~e[3],pp[3],add1[2], 4'b0}; - // assign acc[4] = {43'b01,~e[4],pp[4],add1[3], 6'b0}; - // assign acc[5] = {41'b01,~e[5],pp[5],add1[4], 8'b0}; - // assign acc[6] = {39'b01,~e[6],pp[6],add1[5], 10'b0}; - // assign acc[7] = {37'b01,~e[7],pp[7],add1[6], 12'b0}; - // assign acc[8] = {35'b01,~e[8],pp[8],add1[7], 14'b0}; - // assign acc[9] = {33'b01,~e[9],pp[9],add1[8], 16'b0}; - // assign acc[10] = {31'b01,~e[10],pp[10],add1[9], 18'b0}; - // assign acc[11] = {29'b01,~e[11],pp[11],add1[10], 20'b0}; - // assign acc[12] = {27'b01,~e[12],pp[12],add1[11], 22'b0}; - // assign acc[13] = {25'b01,~e[13],pp[13],add1[12], 24'b0}; - // assign acc[14] = {23'b01,~e[14],pp[14],add1[13], 26'b0}; - // assign acc[15] = {21'b01,~e[15],pp[15],add1[14], 28'b0}; - // assign acc[16] = {19'b01,~e[16],pp[16],add1[15], 30'b0}; - // assign acc[17] = {17'b01,~e[17],pp[17],add1[16], 32'b0}; - // assign acc[18] = {15'b01,~e[18],pp[18],add1[17], 34'b0}; - // assign acc[19] = {13'b01,~e[19],pp[19],add1[18], 36'b0}; - // assign acc[20] = {11'b01,~e[20],pp[20],add1[19], 38'b0}; - // assign acc[21] = {9'b01,~e[21],pp[21],add1[20], 40'b0}; - // assign acc[22] = {7'b01,~e[22],pp[22],add1[21], 42'b0}; - // assign acc[23] = {5'b01,~e[23],pp[23],add1[22], 44'b0}; - // assign acc[24] = {3'b01,~e[24],pp[24],add1[23], 46'b0}; - // assign acc[25] = {1'b0, ~e[25],pp[25],add1[24], 48'b0}; - // assign acc[26] = {pp[26],add1[25], 50'b0}; - -//***breaks lint with warnings like: %Warning-UNOPTFLAT: Example path: src/fpu/multiply.sv:86: ASSIGNW -// %Warning-UNOPTFLAT: Example path: src/fpu/multiply.sv:22: wallypipelinedsoc.hart.fpu.fma1.multiply.lv3add - //*** resize adders - // generate - // for(i=0; i<9; i=i+1) begin - // add3comp2 #(.BITS(107)) add1(.a(acc[i*3]), .b(acc[i*3+1]), .c(acc[i*3+2]), - // .carry(carryTmp[i][106:0]), .sum(lv1add[i*2+1])); - // assign lv1add[i*2] = {carryTmp[i][105:0], 1'b0}; - // end - // endgenerate - - // generate - // for(i=0; i<6; i=i+1) begin - // add3comp2 #(.BITS(107)) add2(.a(lv1add[i*3]), .b(lv1add[i*3+1]), .c(lv1add[i*3+2]), - // .carry(carryTmp[i+9][106:0]), .sum(lv2add[i*2+1])); - // assign lv2add[i*2] = {carryTmp[i+9][105:0], 1'b0}; - // end - // endgenerate - - // generate - // for(i=0; i<4; i=i+1) begin - // add3comp2 #(.BITS(107)) add3(.a(lv2add[i*3]), .b(lv2add[i*3+1]), .c(lv2add[i*3+2]), - // .carry(carryTmp[i+15][106:0]), .sum(lv3add[i*2+1])); - // assign lv3add[i*2] = {carryTmp[i+15][105:0], 1'b0}; - // end - // endgenerate - - - // generate - // for(i=0; i<2; i=i+1) begin - // add4comp2 #(.BITS(107)) add4(.a(lv3add[i*4]), .b(lv3add[i*4+1]), .c(lv3add[i*4+2]), .d(lv3add[i*4+3]), - // .carry(carryTmp[i+19]), .sum(lv4add[i*2+1])); - // assign lv4add[i*2] = {carryTmp[i+19][105:0], 1'b0}; - // end - // endgenerate - - // add4comp2 #(.BITS(107)) add5(.a(lv4add[0]), .b(lv4add[1]), .c(lv4add[2]), .d(lv4add[3]) , - // .carry(carryTmp[21]), .sum(tmpsE)); - // assign sE = tmpsE[105:0]; - // assign rE = {carryTmp[21][104:0], 1'b0}; - // assign rE = 0; - // assign sE = acc[0] + - // acc[1] + - // acc[2] + - // acc[3] + - // acc[4] + - // acc[5] + - // acc[6] + - // acc[7] + - // acc[8] + - // acc[9] + - // acc[10] + - // acc[11] + - // acc[12] + - // acc[13] + - // acc[14] + - // acc[15] + - // acc[16] + - // acc[17] + - // acc[18] + - // acc[19] + - // acc[20] + - // acc[21] + - // acc[22] + - // acc[23] + - // acc[24] + - // acc[25] + - // acc[26]; - - assign sE = {53'b0,~(xdenormE|xzeroE),xman} * {53'b0,~(ydenormE|yzeroE),yman}; - assign rE = 0; -endmodule - diff --git a/wally-pipelined/src/fpu/normalize.sv b/wally-pipelined/src/fpu/normalize.sv deleted file mode 100644 index fe97ddeac..000000000 --- a/wally-pipelined/src/fpu/normalize.sv +++ /dev/null @@ -1,147 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Block Name: normalize.v -// Author: David Harris -// Date: 11/2/1995 -// -// Block Description: -// This block performs the normalization shift. It also -// generates the Rands bits for rounding. Finally, it -// handles the special case of a zero sum. -// -// v[53:2] is the fraction component of the prerounded result. -// It can be bypassed back to the X or Z inputs of the FMAC -// for back-to-back operations. -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -module normalize(sum, zexp, normcnt, aeM, aligncntM, sumshiftM, sumshiftzeroM, sumzero, - xzeroM, zzeroM, yzeroM, bsM, xdenormM, ydenormM, zdenormM, sticky, de0, resultdenorm, v); -///////////////////////////////////////////////////////////////////////////// - input logic [163:0] sum; // sum - input logic [62:52] zexp; // sum - input logic [8:0] normcnt; // normalization shift count - input logic [12:0] aeM; // normalization shift count - input logic [12:0] aligncntM; // normalization shift count - input logic [8:0] sumshiftM; // normalization shift count - input logic sumshiftzeroM; - input logic sumzero; // sum is zero - input logic bsM; // sticky bit for addend - input logic xdenormM; // Input Z is denormalized - input logic ydenormM; // Input Z is denormalized - input logic zdenormM; // Input Z is denormalized - input logic xzeroM; - input logic yzeroM; - input logic zzeroM; - output logic sticky; //sticky bit - output logic [12:0] de0; - output logic resultdenorm; // Input Z is denormalized - output logic [53:0] v; // normalized sum, R, S bits - - // Internal nodes - -logic [163:0] sumshifted; // shifted sum - logic [9:0] sumshifttmp; - logic [163:0] sumshiftedtmp; // shifted sum - logic isShiftLeft1; -logic tmp,tmp1,tmp2,tmp3,tmp4, tmp5; - - // When the sum is zero, normalization does not apply and only the - // sticky bit must be computed. Otherwise, the sum is right-shifted - // and the Rand S bits (v[1] and v[O], respectively) are assigned. - - // The R bit is also set on denormalized numbers where the exponent - // was computed to be exactly -1023 and the L bit was set. This - // is required for correct rounding up of multiplication results. - - // The sticky bit calculation is actually built into the shifter and - // does not require a true subtraction shown in the model. - - assign isShiftLeft1 = (aligncntM == 13'b1 ||aligncntM == 13'b0 || $signed(aligncntM) == $signed(-(13'b1)))&& zexp == 11'h2; - // assign tmp = ($signed(aeM-normcnt+2) >= $signed(-1022)); - always_comb - begin - // d = aligncntM - // l = normcnt - // p = 53 - // ea + eb = aeM - // set d<=2 to d<=0 - if ($signed(aligncntM)<=$signed(13'd2)) begin //d<=2 - // product anchored or cancellation - if ($signed(aeM-{{4{normcnt[8]}},normcnt}+13'd2) >= $signed(-(13'd1022))) begin //ea+eb-l+2 >= emin - //normal result - de0 = xzeroM|yzeroM ? {2'b0,zexp} : aeM-{{4{normcnt[8]}},normcnt}+{12'b0,xdenormM}+{12'b0,ydenormM}+13'd57; - resultdenorm = |sum & ~|de0 | de0[12]; - // if z is zero then there was a 56 bit shift of the product - sumshifted = resultdenorm ? sum << sumshiftM-{8'b0,zzeroM}+{8'b0,isShiftLeft1} : sum << normcnt; // p+2+l - v = sumshifted[162:109]; - sticky = (|sumshifted[108:0]) | bsM; - //de0 = aeM-normcnt+2-1023; - end else begin - sumshifted = sum << (13'd1080+aeM); - v = sumshifted[162:109]; - sticky = (|sumshifted[108:0]) | bsM; - resultdenorm = 1; - de0 = 0; - end - - end else begin // extract normalized bits - sumshifttmp = {1'b0,sumshiftM} - 2; - sumshifted = sumshifttmp[9] ? sum : sum << sumshifttmp; - tmp1 = (sumshifted[163] & ~sumshifttmp[9]); - tmp2 = ((sumshifttmp[9] & sumshiftM[0]) || sumshifted[162]); - tmp3 = (sumshifted[161] || (sumshifttmp[9] & sumshiftM[1])); - tmp4 = sumshifted[160]; - tmp5 = sumshifted[159]; - // for some reason use exp = zexp + {0,1,2} - // the book says exp = zexp + {-1,0,1} - if(sumshiftzeroM) begin - v = sum[162:109]; - sticky = (|sum[108:0]) | bsM; - de0 = {2'b0,zexp}; - end else if(sumshifted[163] & ~sumshifttmp[9])begin - v = sumshifted[162:109]; - sticky = (|sumshifted[108:0]) | bsM; - de0 = {2'b0,zexp} +13'd2; - end else if ((sumshifttmp[9] & sumshiftM[0]) || sumshifted[162]) begin - v = sumshifted[161:108]; - sticky = (|sumshifted[107:0]) | bsM; - de0 = {2'b0,zexp}+13'd1; - end else if (sumshifted[161] || (sumshifttmp[9] & sumshiftM[1])) begin - v = sumshifted[160:107]; - sticky = (|sumshifted[106:0]) | bsM; - //de0 = zexp-1; - de0 = {2'b0,zexp}+{12'b0,zdenormM}; - end else if(sumshifted[160]& ~zdenormM) begin - de0 = {2'b0,zexp}-13'b1; - v = ~|de0&~sumzero ? sumshifted[160:107] : sumshifted[159:106]; - sticky = (|sumshifted[105:0]) | bsM; - //de0 = zexp-1; - end else if(sumshifted[159]& ~zdenormM) begin - //v = sumshifted[158:105]; - de0 = {2'b0,zexp}-13'd2; - v = (~|de0 | de0[12])&~sumzero ? sumshifted[161:108] : sumshifted[158:105]; - sticky = (|sumshifted[104:0]) | bsM; - //de0 = zexp-1; - end else if(zdenormM) begin - v = sumshifted[160:107]; - sticky = (|sumshifted[106:0]) | bsM; - //de0 = zexp-1; - de0 = {{2{zexp[62]}},zexp}; - end else begin - de0 = 0; - sumshifted = sum << sumshiftM-1; // p+2+l - v = sumshifted[162:109]; - sticky = (|sumshifted[108:0]) | bsM; - end - - resultdenorm = (~|de0 | de0[12]); - end - end - - - // shift sum left by normcnt, filling the right with zeros - //assign sumshifted = sum << normcnt; - -endmodule - - diff --git a/wally-pipelined/src/fpu/round.sv b/wally-pipelined/src/fpu/round.sv deleted file mode 100644 index e56af7c70..000000000 --- a/wally-pipelined/src/fpu/round.sv +++ /dev/null @@ -1,122 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Block Name: round.v -// Author: David Harris -// Date: 11/2/1995 -// -// Block Description: -// This block is responsible for rounding the normalized result of // the FMAC. Because prenormalized results may be bypassed back to // the FMAC X and z input logics, rounding does not appear in the critical // path of most floating point code. This is good because rounding // requires an entire 52 bit carry-propagate half-adder delay. -// -// The results from other FPU blocks (e.g. FCVT, FDIV, etc) are also -// muxed in to form the actual result for register file writeback. This -// saves a mux from the writeback path. -// -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -module round(v, sticky, FrmM, wsign, - FmaFlagsM, inf, nanM, xnanM, ynanM, znanM, - xman, yman, zman, - wman, infinity, specialsel,expplus1); -///////////////////////////////////////////////////////////////////////////// - - input logic [53:0] v; // normalized sum, R, S bits - input logic sticky; //sticky bit - input logic [2:0] FrmM; - input logic wsign; // Sign of result - input logic [4:0] FmaFlagsM; - input logic inf; // Some input logic is infinity - input logic nanM; // Some input logic is NaN - input logic xnanM; // X is NaN - input logic ynanM; // Y is NaN - input logic znanM; // Z is NaN - input logic [51:0] xman; // input logic X - input logic [51:0] yman; // input logic Y - input logic [51:0] zman; // input logic Z - output logic [51:0] wman; // rounded result of FMAC - output logic infinity; // Generate infinity on overflow - output logic specialsel; // Select special result - output logic expplus1; - - // Internal nodes - - logic plus1; // Round by adding one - wire [52:0] v1; // Result + 1 (for rounding) - wire [51:0] specialres; // Result of exceptional case - wire [51:0] infinityres; // Infinity or largest real number - wire [51:0] nanres; // Propagated or generated NaN - - // Compute if round should occur. This equation is derived from - // the rounding tables. - - // round to infinity - plus1 if positive - // round to -infinity - plus1 if negitive - // round to zero - do nothing - // round to nearest even - // {v[1], v[0], sticky} - // 0xx - do nothing - // 100 - tie - plus1 if v[2] = 1 - // 101/110/111 - plus1 - - //***causes lint warning: %Warning-UNOPTFLAT: Example path: src/fpu/round.sv:59: ALWAYS -// %Warning-UNOPTFLAT: Example path: src/fpu/round.sv:42: wallypipelinedsoc.hart.fpu.fma2.round.plus1 - - always_comb begin - case (FrmM) - 3'b000: plus1 = (v[1] & (v[0] | sticky | (~v[0]&~sticky&v[2])));//round to nearest even - 3'b001: plus1 = 0;//round to zero - 3'b010: plus1 = wsign;//round down - 3'b011: plus1 = ~wsign;//round up - 3'b100: plus1 = (v[1] & (v[0] | sticky | (~v[0]&~sticky&~wsign)));//round to nearest max magnitude - default: plus1 = 1'bx; - endcase - end - - // Compute rounded result - assign v1 = v[53:2] + 1; - // Determine if postnormalization is necessary - // Predicted by all bits =1 before round +1 - - //assign postnormalize = &(v[53:2]) && plus1; - - // Determine special result in event of of selection of a result from - // another FPU functional unit, infinity, NAN, or underflow - // The special result mux is a 4:1 mux that should not appear in the - // critical path of the machine. It is not priority encoded, despite - // the code below suggesting otherwise. Also, several of the identical data - // input logics to the wide muxes can be combined at the expense of more - // complicated non-critical control in the circuit implementation. - - assign specialsel = FmaFlagsM[2] || FmaFlagsM[1] || FmaFlagsM[4] || //overflow underflow invalid - nanM || inf; - assign specialres = FmaFlagsM[4] | nanM ? nanres : //invalid - FmaFlagsM[2] ? infinityres : //overflow - inf ? 52'b0 : - FmaFlagsM[1] ? 52'b0 : 52'bx; // underflow - - // Overflow is handled differently for different rounding modes - // Round is to either infinity or to maximum finite number - - assign infinity = |FrmM;//rn || (rp && ~wsign) || (rm && wsign);//***look into this - assign infinityres = infinity ? 52'b0 : {52{1'b1}}; - - // Invalid operations produce a quiet NaN. The result should - // propagate an input logic if the input logic is NaN. Since we assume all - // NaN input logics are already quiet, we don't have to force them quiet. - - // assign nanres = xnanM ? x: (ynanM ? y : (znanM ? z : {1'b1, 51'b0})); // original - - // IEEE 754-2008 section 6.2.3 states: - // "If two or more input logics are NaN, then the payload of the resulting NaN should be - // identical to the payload of one of the input logic NaNs if representable in the destination - // format. This standard does not specify which of the input logic NaNs will provide the payload." - assign nanres = xnanM ? {1'b1, xman[50:0]}: (ynanM ? {1'b1, yman[50:0]} : (znanM ? {1'b1, zman[50:0]} : {1'b1, 51'b0}));// KEP 210112 add the 1 to make NaNs quiet - - // Select result with 4:1 mux - // If the sum is zero and we round up, there is a special case in - // which we produce a massive loss of significance and trap to software. - // It is handled in the exception unit. - assign expplus1 = v1[52] & ~specialsel & plus1; - assign wman = specialsel ? specialres : (plus1 ? v1[51:0] : v[53:2]); - -endmodule - diff --git a/wally-pipelined/src/fpu/sign.sv b/wally-pipelined/src/fpu/sign.sv deleted file mode 100644 index 022c84aad..000000000 --- a/wally-pipelined/src/fpu/sign.sv +++ /dev/null @@ -1,112 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Block Name: sign.v -// Author: David Harris -// Date: 12/1/1995 -// -// Block Description: -// This block manages the signs of the numbers. -// 1 = negative -// -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -module sign(xsign, ysign, zsign, negsum0, negsum1, bsM, FrmM, FmaFlagsM, - sumzero, zinfM, inf, wsign, invz, negsum, selsum1, isAdd); -////////////////////////////////////////////////////////////////////////////I - - input logic xsign; // Sign of X - input logic ysign; // Sign of Y - input logic zsign; // Sign of Z - input logic isAdd; - input logic negsum0; // Sum in +O mode is negative - input logic negsum1; // Sum in +1 mode is negative - input logic bsM; // sticky bit from addend - input logic [2:0] FrmM; // Round toward minus infinity - input logic [4:0] FmaFlagsM; // Round toward minus infinity - input logic sumzero; // Sum = O - input logic zinfM; // Y = Inf - input logic inf; // Some input logic = Inf - output logic wsign; // Sign of W - output logic invz; // Invert addend into adder - output logic negsum; // Negate result of adder - output logic selsum1; // Select +1 mode from compound adder - - // Internal nodes - - wire zerosign; // sign if result= 0 - wire sumneg; // sign if result= 0 - wire infsign; // sign if result= Inf -logic tmp; - logic psign; - - // Compute sign of product - - assign psign = xsign ^ ysign; - - // Invert addend if sign of Z is different from sign of product assign invz = zsign ^ psign; - - //do you invert z - assign invz = (zsign ^ psign); - - assign selsum1 = invz; - //negate sum if its negitive - assign negsum = (selsum1&negsum1) | (~selsum1&negsum0); - // is the sum negitive - // if p - z is the sum negitive - // if -p + z is the sum positive - // if -p - z then the sum is negitive - assign sumneg = invz&zsign&negsum1 | invz&psign&~negsum1 | (zsign&psign); - //always @(invz or negsum0 or negsum1 or bsM or ps) - // begin - // if (~invz) begin // both input logics have same sign - // negsum = 0; - // selsum1 = 0; - // end else if (bsM) begin // sticky bit set on addend - // selsum1 = 0; - // negsum = negsum0; - // end else if (ps) begin // sticky bit set on product - // selsum1 = 1; - // negsum = negsum1; - // end else begin // both sticky bits clear - // //selsum1 = negsum1; // KEP 210113-10:44 Selsum1 was adding 1 to values that were multiplied by 0 - // selsum1 = ~negsum1; //original - // negsum = negsum1; - // end - //end - - // Compute sign of result - // This involves a special case when the sum is zero: - // x+x retains the same sign as x even when x = +/- 0. - // otherwise, x-x = +O unless in the RM mode when x-x = -0 - // There is also a special case for NaNs and invalid results; - // the sign of the NaN produced is forced to be 0. - // Sign calculation is not in the critical path so the cases - // can be tolerated. - // IEEE 754-2008 section 6.3 states - // "When ether an input logic or result is NaN, this standard does not interpret the sign of a NaN." - // also pertaining to negZero it states: - // "When the sum/difference of two operands with opposite signs is exactly zero, the sign of that sum/difference - // shall be +0 in all rounding attributes EXCEPT roundTowardNegative. Under that attribute, the sign of an exact zero - // sum/difference shall be -0. However, x+x = x-(-X) retains the same sign as x even when x is zero." - - //assign zerosign = (~invz && killprodM) ? zsign : rm;//***look into -// assign zerosign = (~invz && killprodM) ? zsign : 0; - // zero sign - // if product underflows then use psign - // otherwise - // addition - // if cancelation then 0 unless round to -inf - // otherwise psign - // subtraction - // if cancelation then 0 unless round to -inf - // otherwise psign - - assign zerosign = FmaFlagsM[1] ? psign : - (isAdd ? (psign^zsign ? FrmM == 3'b010 : psign) : - (psign^zsign ? psign : FrmM == 3'b010)); - assign infsign = zinfM ? zsign : psign; //KEP 210112 keep the correct sign when result is infinity - //assign infsign = xinfM ? (yinfM ? psign : xsign) : yinfM ? ysign : zsign;//original - assign tmp = FmaFlagsM[4] ? 0 : (inf ? infsign :(sumzero ? zerosign : psign ^ negsum)); - assign wsign = FmaFlagsM[4] ? 0 : (inf ? infsign :(sumzero ? zerosign : sumneg)); - -endmodule diff --git a/wally-pipelined/src/fpu/special.sv b/wally-pipelined/src/fpu/special.sv deleted file mode 100644 index 8ca265bb3..000000000 --- a/wally-pipelined/src/fpu/special.sv +++ /dev/null @@ -1,67 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Block Name: special.v -// Author: David Harris -// Date: 12/2/1995 -// -// Block Description: -// This block implements special case handling for unusual operands (e.g. -// 0, NaN, denormalize, infinity). The block consists of zero/one detectors. -// -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -module special(FInput1E, FInput2E, FInput3E, xzeroE, yzeroE, zzeroE, - xnanE, ynanE, znanE, xdenormE, ydenormE, zdenormE, xinfE, yinfE, zinfE); -///////////////////////////////////////////////////////////////////////////// - - input logic [63:0] FInput1E; // Input FInput1E - input logic [63:0] FInput2E; // Input FInput2E - input logic [63:0] FInput3E; // Input FInput3E - output logic xzeroE; // Input FInput1E = 0 - output logic yzeroE; // Input FInput2E = 0 - output logic zzeroE; // Input FInput3E = 0 - output logic xnanE; // FInput1E is NaN - output logic ynanE; // FInput2E is NaN - output logic znanE; // FInput3E is NaN - output logic xdenormE; // FInput1E is denormalized - output logic ydenormE; // FInput2E is denormalized - output logic zdenormE; // FInput3E is denormalized - output logic xinfE; // FInput1E is infinity - output logic yinfE; // FInput2E is infinity - output logic zinfE; // FInput3E is infinity - - // In the actual circuit design, the gates looking at bits - // 51:0 and at bits 62:52 should be shared among the various detectors. - - // Check if input is NaN - - assign xnanE = &FInput1E[62:52] && |FInput1E[51:0]; - assign ynanE = &FInput2E[62:52] && |FInput2E[51:0]; - assign znanE = &FInput3E[62:52] && |FInput3E[51:0]; - - // Check if input is denormalized - - assign xdenormE = ~(|FInput1E[62:52]) && |FInput1E[51:0]; - assign ydenormE = ~(|FInput2E[62:52]) && |FInput2E[51:0]; - assign zdenormE = ~(|FInput3E[62:52]) && |FInput3E[51:0]; - - // Check if input is infinity - - assign xinfE = &FInput1E[62:52] && ~(|FInput1E[51:0]); - assign yinfE = &FInput2E[62:52] && ~(|FInput2E[51:0]); - assign zinfE = &FInput3E[62:52] && ~(|FInput3E[51:0]); - - // Check if inputs are all zero - // Also forces denormalized inputs to zero. - // In the circuit implementation, this can be optimized - // to just check if the exponent is zero. - - // KATHERINE - commented following (21/01/11) - // assign xzeroE = ~(|FInput1E[62:0]) || xdenormE; - // assign yzeroE = ~(|FInput2E[62:0]) || ydenormE; - // assign zzeroE = ~(|FInput3E[62:0]) || zdenormE; - // KATHERINE - removed denorm to prevent output logicing zero when computing with a denormalized number - assign xzeroE = ~(|FInput1E[62:0]); - assign yzeroE = ~(|FInput2E[62:0]); - assign zzeroE = ~(|FInput3E[62:0]); - endmodule diff --git a/wally-pipelined/testbench/testbench-imperas.sv b/wally-pipelined/testbench/testbench-imperas.sv index 170f1377a..781ff78e1 100644 --- a/wally-pipelined/testbench/testbench-imperas.sv +++ b/wally-pipelined/testbench/testbench-imperas.sv @@ -122,6 +122,9 @@ string tests32f[] = '{ }; string tests64d[] = '{ + "rv64d/I-FNMADD-D-01", "2000", + "rv64d/I-FNMSUB-D-01", "2000", + "rv64d/I-FMSUB-D-01", "2000", "rv64d/I-FMAX-D-01", "2000", "rv64d/I-FMIN-D-01", "2000", "rv64d/I-FLE-D-01", "2000", @@ -143,12 +146,9 @@ string tests32f[] = '{ "rv64d/I-FSD-01", "2000", "rv64d/I-FLD-01", "2420", "rv64d/I-FMADD-D-01", "2000", - // "rv64d/I-FMSUB-D-01", "2000", - // "rv64d/I-FMUL-D-01", "2000", - "rv64d/I-FMV-D-X-01", "2000", - "rv64d/I-FMV-X-D-01", "2000", - // "rv64d/I-FNMADD-D-01", "2000", - // "rv64d/I-FNMSUB-D-01", "2000", + "rv64d/I-FMUL-D-01", "2000", + // "rv64d/I-FMV-D-X-01", "2000", + // "rv64d/I-FMV-X-D-01", "2000", "rv64d/I-FSGNJ-D-01", "2000", "rv64d/I-FSGNJN-D-01", "2000", "rv64d/I-FSGNJX-D-01", "2000",